picoCTF2023 Web Writeup

findme

题目提示使用test/test!登陆

1679025482948.png

抓到了两个请求包,最后跳转到/home,把这里的两段base64连起来即为flag

picoCTF{proxies_all_the_way_3d9e3697}

MatchTheRegex

正则匹配flag,F12打开给了提示

1679025904627.png
1679025857252.png
picoCTF{succ3ssfully_matchtheregex_c64c9546}

SOAP

点击这几个按钮,会返回一些信息,通过网络信息查找到xmlDetailsCheckPayload.js

1679030210249.png

抓包发现是通过访问data路由发送的信息

1679030313447.png

这里就很明显是xxe了,但是尝试了多种payload发现均不能被解析,最后发现必须要使用<data><ID></ID></data>才行......

1679030183041.png
picoCTF{XML_3xtern@l_3nt1t1ty_e79a75d4}

More SQLi

万能密码然后跳转到welcome.php,flag就在跳转之前的响应包里

1679033265263.png
picoCTF{G3tting_5QL_1nJ3c7I0N_l1k3_y0u_sh0ulD_c8b7cc2a}

Java Code Analysis!?!

给了提示说从源码中寻找硬编码的JWT的key

1679049343699.png
1679049392370.png

首先从server_secret.txt文件中读取key;如果不存在这个文件,就会生成一个32长度随机字符串。但仔细看这个函数就发现,是一个伪代码,实际上返回的key就是1234,然后把key存入server_secret.txt

所以key就是1234了,当然也可以直接用C-JWT-Cracker爆破key,得到1234(jwt在登陆的返回包中)

1679049189191.png
1679051016370.png
1679051056153.png
1679051071356.png
1679051100197.png
picoCTF{w34k_jwt_n0t_g00d_42f5774a}