# [NPUCTF2020]ezlogin
首先发现一个
<username></username><password></pwssword><token></token>
的模板,以为是 xss,注入半天搞不了,(content-type:application/xml) 结果是 xpath 注入:
# xpath 注入
在我对 xpath 注入的理解是类似于 SQL 注入。
在 xpath 中的查询语句为:
"/root/users/user[username/text()='".$name."' and password/text()='".$pwd."']";
其中 pwd 是我们输入的字符,这里对字符没有经过任何的过滤。
当 $name= admin‘ or 1=1 or ‘’=’
拼接后的语句为:
"/root/users/user[username/text()='admin' or 1=1 or ''='' and password/text()='".$pwd."']"; //成为永真使,万能密码
值得注意的是在 xpath 的查询语句中没有注释。
输入:
'or count(/)=1 or ''=' //count函数是查询节点个数
输入:
'or count(/)=2 or ''='
存在有不同的特征值,可以用布尔盲注
先附上一句 playload,并解释一下:
在
要注意的是,因为页面会不断的刷新,这个 token 的值也会一直变化,注意拿到最新的 token 值
注意在第八行设置 head 时候千万不要用 cookie 和 UA,一定要有 content-type,我看其他人的脚本都有这个,结果爬出的数据都是 “超时” 的界面。
最后爆出来直接登录在?flie=welcome 加入 php 伪协议(大小写去掉 read):
Php://filter/convert.Base64-Encode/resource=/flag