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