靶场页面
可以看到这是一个抽奖的小游戏,下面附规则:猜中的数越多赚米就越多(有点像福彩)
运气好的宝宝可以体验一下游戏,咱是输的一文不剩(家人们一定要远离赌毒啊),只能看看别的地方了
在Claim Your Prize这个标签看到flag是可以购买的,但是价钱真的不要太黑心了。所以思考要不要通过某种方式刷钱来buy Flag?
破解思路
从控制台查看响应界面,发现是api.php页面触发回显
查看api.php的响应
根据回显猜测后端响应页面api.php的代码是解题的重要思路
所以要对api.php进行审计
查找网页源码
直接用F12查看网页源代码,都是HTML代码,没有有用的信息
这时候就要考虑想办法得到后端的代码,可以使用dirsearch工具扫描目录
dirsearch安装以及使用
python dirsearch.py -u http://61.147.171.105:51803/ -e*~
看到网站目录有.git文件,可以联想到.git泄露
.git泄露
- 在一个目录中初始化一个仓库以后 , 会在这个目录下产生一个名叫
.git
的隐藏文件夹(版本库)这个文件夹里面保存了这个仓库的所有版本等一系列信息开发人员在开发时,常常会先把源码提交到远程托管网站(如github),最后再从远程托管网站把源码pull到服务器的web目录下。如果忘记把.git文件删除,就可以利用.git文件恢复网站的源码,而源码里可能会有数据库的信息。
.git泄露详细介绍
Git与Git文件导致源码泄露_当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.gi-CSDN博客
如果存在.git泄露,我们可以使用GitHack来获取后端源码
使用GitHack获取源码
GitHack下载安装
在GitHack.py的目录下打开终端输入命令获取源码
python GitHack.py http://61.147.171.105:51803/.git/
下载的源码在GitHack文件里面,文件名就是刚刚我们输入的靶场url
根据刚才的思路对有回显的api.php进行代码审计,在buy函数找到漏洞
buy函数使用了 " == " ,这是一个弱类型。在使用 == 比较时,变量true可以和任何类型的字符串或数字相等而使判断返回true。(除了true == 0或true == false或true == null的情况)
因此我们可以尝试构造一个全是true的数组传入
使用burpsuite构造true数组
发包
应该是构造的数组有点小错误, 也可以构造字典
{"action":"buy","numbers":{"0":true,"1":true,"2":true,"3":true,"4":true,"5":true,"6":true}}
可以看到中奖啦,多发包几次就够米买flag了(这个钱要是能提现多好)