# [NPUCTF2020]ezlogin

首先发现一个

<username></username><password></pwssword><token></token>

的模板,以为是 xss,注入半天搞不了,(content-type:application/xml) 结果是 xpath 注入:

# xpath 注入

xpath 注入详细介绍

在我对 xpath 注入的理解是类似于 SQL 注入。

在 xpath 中的查询语句为:

"/root/users/user[username/text()='".$name."' and password/text()='".$pwd."']";

其中namename和 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,并解释一下:

里面的 {X} 中的 X 是一个变量,它指的是查询的元素 X 个字符,Y 也是一个变量,是指我们猜测的字符,如果 X=Y 那么就会返回 true,对应的我们的题目就会返回 “非法操作!”

要注意的是,因为页面会不断的刷新,这个 token 的值也会一直变化,注意拿到最新的 token 值

注意在第八行设置 head 时候千万不要用 cookie 和 UA,一定要有 content-type,我看其他人的脚本都有这个,结果爬出的数据都是 “超时” 的界面。

最后爆出来直接登录在?flie=welcome 加入 php 伪协议(大小写去掉 read):

Php://filter/convert.Base64-Encode/resource=/flag

参考链接:https://www.cnblogs.com/lthlsy/p/14843052.html