Intigriti CTFBug Report Repo
挺难的一道题,也挺有意思的一道题,发篇博客复现一下,主要考察webscoket注入+JWT伪造
先打开一下环境
然后发现是一个基于websocket实时通讯的一个bug report平台,这里输入一个ID,然后服务器即可返回将这个高亮
需要注意的是ID=11的时候有一个好玩的显示,感觉这里的ethical_hacker是提示
然后可以用bp抓包其实感觉websocket的抓包和普通的sql注入是差不多的?
这里又做了下载bp的破解版+给chrome导入bp的证书,突然发现bp是可以截取webscoket信息的,比在js上调试好多了,不知道为什么bp截取https总会很慢 不知道是网站问题还是我bp的问题(略微倾向一点网站的问题)真的好奇怪 就我改成系统代理立马就好了,但是用bp的代理就会卡很久、但是最后还是好了,不懂
然后可以用sqlmap进行注入分析,sqlmap真是神
1 | sqlmap --random-agent -u 'wss://bountyrepo.ctf.intigriti.io/ws' --data '{"id":"11"}' --dbms sqlite -T "bug_reports" --threads 10 --dump --where "id=11" --batch |
这些参数的介绍
- -random-agent:指随机agent
- -u:后面加URL,这里是指webscoket的服务器端
- -data:
sqlmap
中的-d
或--data
参数用于指定要用于 POST 请求的数据。在 Web 应用程序渗透测试中,你可能会遇到需要检测和利用 POST 请求中的 SQL 注入漏洞的情况。使用-d
参数,你可以向sqlmap
提供 POST 请求的数据,以便它能够分析和测试可能存在的 SQL 注入漏洞。 - -dbms:指数据库
- -T: 应该是table
- –threads:指多线程
- –dump:指将数据展示出来
然后即可注出漏洞!感觉脚本小子真好
发现这个:crypt0:c4tz on /4dm1n_z0n3, really?!
然后登录
https://bountyrepo.ctf.intigriti.io/4dm1n_z0n3/
输入账号和密码
然后发现不是admin,然后查看cookie发现是jwt
然后用jwt tools爆破获取密钥(这里顺手下了个kali的wordlist)
这里加个插曲,平时一个人用root跟普通用户习惯了,忘记普通用户的python环境和root不一样了
爆破出来密钥为catsarethebest,然后伪造admin
修改cookie即可获得flag