全部赛题:https://github.com/findneo/ctfgodown/tree/master/20180430-ciscn
WEB
easyweb
http://114.116.26.217/
学习了一点 json web token ,但是没想到是个脑洞。(应该只是非预期解)
账户admin,空密码登陆。
ciscn{2a36b5f78a1d6a107212d82ee133c421}
有师傅在群里说HMAC的密钥放在数据库里,而kid是个注入点,可以通过联合查询控制查询结果,然后伪造签名。
从开始做到赛后试着复现都一直纠结alg
是sha256的问题,以为密钥是用来加盐,然后就自己胡乱加盐,陷入困境。后来仔细了解了一下,HMAC就算是一个比较复杂的加盐算法吧,自己加没啥意思,而且jwt也不支持纯粹sha256。
事实证明把sha256改成HS256就好了。这里有两种可能,一是后端写死算法为HS256,然后header里面写成了sha256,二是算法根据alg
的值确定,我们传入HS256所以按照HS256来计算。
经过测试发现后端甚至根本不在乎有没alg
,,,,所以说做题思路还是要灵活一些。
kid的值随意传,奇怪一点就行,只要让它查询不出结果,那么我们联合查询的值就会作为最后的密钥。
参考:
- https://www.jianshu.com/p/e64d96b4a54d
- https://security.stackexchange.com/questions/79577/whats-the-difference-between-hmac-sha256key-data-and-sha256key-data
- https://docs.python.org/2/library/hmac.html
MISC
验证码
本题目为验证码破解,选手需在指定时间完成对验证码的破解,成功后获取Flag。请使用队伍token进行登陆。 参考数据:https://share.weiyun.com/6e055fc3402e86c7cbb5384f1a6b41b8
题目有点问题,手动玩了一会儿。
ciscn{12qiftb1qj12mbzm1xmjd2iix2ibqz7i}
后来换成输验证码得flag了。
picture
请从图中找出密码。
binwalk -e
分离得到 97E4
和 97E4.zlib
两个文件,后者是前者的 zlib 压缩文件。
文件97E4
内容的base64解码后稍做处理是一个加密的压缩包。
|
|
大致内容如下:
对比得到密码: integer division or modulo by zero
得到一串编码后字符:
解码得到 CISCN{C16E6F6E065DA0306E318D095C68BDC0}
run
参考链接:
- http://cauc.me/2017/11/16/python%E6%B2%99%E7%9B%92%E7%BB%95%E8%BF%87/
- https://blog.csdn.net/qq_35078631/article/details/78504415
顺便dump下来几个文件
cpython.py
sandbox.py
|
|
/home/ctf/bin
题目备份
https://github.com/findneo/ctfgodown/tree/master/20180430-ciscn