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