lottery!(about /.git)

一道关于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源码泄露,也应该很容易想到试一试对==的绕过。(网络安全靠细心!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。