未知的风险-1
题目有描述
看题目,只有简单的一行
hello guest,题目描述说只允许user进入,也就是我们要伪造身份。
抓包
这token格式一看就是jwt(T0ki师傅说的)
要伪造身份,我们就要构造新的jwt,然而,虽然使用的是HS256,但是翻遍网站也找不到key。于是想到,可能服务器使用的是低版本的jwt,需要我们把加密格式改为none。
用jwt_tool来修改jwt,并发包。
成功来到一个登陆页面,对应题目描述中的一把锁。阅读页面的js代码可知,数据会以xml实体post到一个doLogin.php页面,返回的code决定了登陆是否成功。于是我尝试修改了返回包,使code为1。
虽然登陆成功但是什么也没有。
再看题目描述,”他猜测密码格式flag{*}”,也就是说,用户密码才是flag。随即想到可能存在xxe漏洞,利用这个漏洞读取doLogin.php的源码,逆向分析验证代码获得flag。
payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE N0P3 [<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php"
> ]>
<user>
<username>&xxe;</username>
<password>admin</password>
</user>
读取成功。分析一下源码
发现include了一个flag.php,直接利用xxe去读
读到了,解码
连源码都不用审,直接就能get flag。