ISCC2020

未知的风险-1

题目有描述

描述

看题目,只有简单的一行

题目

hello guest,题目描述说只允许user进入,也就是我们要伪造身份。

抓包

bp1

这token格式一看就是jwt(T0ki师傅说的)

要伪造身份,我们就要构造新的jwt,然而,虽然使用的是HS256,但是翻遍网站也找不到key。于是想到,可能服务器使用的是低版本的jwt,需要我们把加密格式改为none。

jwt_tool

用jwt_tool来修改jwt,并发包。

成功来到一个登陆页面,对应题目描述中的一把锁。阅读页面的js代码可知,数据会以xml实体post到一个doLogin.php页面,返回的code决定了登陆是否成功。于是我尝试修改了返回包,使code为1。

login

虽然登陆成功但是什么也没有。

再看题目描述,”他猜测密码格式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>

xxe

读取成功。分析一下源码

code

发现include了一个flag.php,直接利用xxe去读

flag1

读到了,解码

flag

连源码都不用审,直接就能get flag。