lottery!(about /.git)
2019-11-25 本文已影响0人
漫谈
一道关于git源码泄露的题,题不是很难,但是我第一次见遇到这种git源码泄露的题型,所以记录一下;
打开题目:
git1.png
发现是一道需要“赚钱”的题,需要先注册一个账号,每个账号会有20块钱,然后去买彩票,每次购买都会扣掉2块;
git2.png
如上图(运气真差一个都没中):
所以这道题很明显就是需要让你绕过这个数的验证然后拿到“钱”,然后就可以购买他的flag。
刚开始并没有什么思路,发现了一个api.php的页面,但是也没有什么太大的发现;
git3.png
于是想要读到api.php的源码,并没有常规办法,于是爆破网站目录,发现/.git/目录存在,使用Git—Hack读取网站源码(管理员或开发人员忘记删除的源码压缩包);
git4.png
查看api.php的源码:
git5.png
分析源码后发现后台使用了用户传入的numbers去与生成的win_numbers进行==运算,显然的漏洞,php弱类型;
然后我们进行burp抓包;
git6.png
post的数据是action(调用buy函数)和bumbers(我们选择的彩票号码),因为后台是一个数字一个数字进行比较的,所以我们这里传入一个数组【true,true,...(7个)】
git7.png
这样我们只要系统生成的数字不是0都可以绕过,多go几次得到足够多的钱。
git8.png
然后返回网页刷新即可购买得到flag!
小结:
这道题的点在于如何才能发现这是一道git源码泄露的题,做完之后反思发现其实当我发现api.php的时候就应该已经知道才对,只不过自己忽视了;因为这里使用数字,但是post的数据是json,而json是可以使用字符的,因此就算没有git源码泄露,也应该很容易想到试一试对==的绕过。(网络安全靠细心!)