HGAME比赛,ak了第一周,记录一下
考点:jwt的cookie伪造
打开之后:
(一开始我也没有想到是jwt的伪造,还尝试过bp弱密码爆破,js代码审计的,浪费了好长的时间)
先尝试弱密码登录,用户名根据题目应该是admin,先后试了几个密码都不对,那就创一个账号
账号:name123 密码:name123
登进去抓包
返回了一个token,看是ey开头,查一下就知道式jwt,使用jwt的网站
可以看到:
然后开始伪造
首先ID作为admin的话,不是0就是1,试一下就可以了 ,然后username改为admin
最后还有一个密钥(密钥是最重要的,没有密钥就拿不到权限)
可以试一下弱密码(签到题都不会太难的密钥),也可以使用c-jwt-cracker爆破(这玩意我下了一晚上都没下好,真菜)
最后得出密钥不存在 (我也没想到) ,就可以得到他的token:
替换一下,重新发送就可以了
flag:hgame{S0_y0u_K1n0w_hOw_JwT_Works1l1lL}
jwt其实还有很多的攻击手法,可以具体看这个[jwt伪造]([AngstromCTF 2019]Cookie Cutter - Ye'sBlog - 博客园 (cnblogs.com))
考点:网络爬虫
从题目就可以知道应该就是爬虫了
打开之后,可以知道让你通关,所以你也可以一直通关(大概100关左右)
也可以写脚本爬虫,脚本我没找到,用了笨方法,100关通过
这里给上脚本:
import requests,regex nextUrl = base = 'https://hgame-spider.vidar.club/xxxx' while 1: keys = regex.findall('<a href=\"(\S+)\">点我试试 </a>',requests.get(nextUrl).text) if len(keys) == 0: break nextUrl = base + keys[0] print(nextUrl) print(requests.get(nextUrl).headers)
flag:hgame{d08e906c45a931fef3d3b3d554a59469944ca641664095bf07d7625fe323df48}
考点:js代码审计
这道相对来说比较简单,只不过是它的编码我以前没见过
打开源码,看到一个checking.js,应该就是检查游戏完成的情况,看到这个
复制一下放到控制台解码就可以了
flag:hgame{jsfuck_1s_S0_fUu1n}
这里总结一下js代码审计的问题:找参数和可疑的长串字符编码
考点:HTTP请求头的应用
打开网站之后抓包:
(那就去一下秋名山)
添加 Referer:qiumingshan.net
(拿一下车神通行证)
修改user-agent:Hachi-Roku
(曲奇就是cookie)cookie是有值有名的
添加cookie:flavor:Raspberry (从这里开始出题人的脑洞开始变大了)
(又要加汽油)
添加 gasoline:100
(要从本地访问)
添加 X-Forwarded-For:127.0.0.1
(大黑客也想当车神)
被看出来了,说明XFF应该被禁用了,可以试试别的
常见的如:client-ip,X-Real-Ip
可以知道是X-Real-Ip:127.0.0.1
flag:hgame{I_b0ught_4_S3xy_sw1mSu1t}