文章目录
-
打开网页显示:
显示是要买彩票,点一下其他链接发现这个:需要先注册账号才可以看到
这不就是表明需要我们进行获取足够的金钱,来买 flag 吗? -
直接买一手彩票,抓个包分析一手:
有的人回想我直接一手爆破不行?不行,这个买彩排需要钱初始20快钱,本人不辛,第一次乱搞直接就没钱了
-
乱看一堆后,这上面都没有啊,会不会是 SSTI 模板注入、XSS 、git 泄露啊?
其他两种测试过后,发现没有,git 泄露的话扫一首目录,或者看一下上方的链接,使用御剑扫描目录,显示如下:
查看一下这个文件,对于这个文件 robots,txt 参考链接 查看一下发现:
这不是 GIT 泄露吗?直接使用 Githack 工具:
对得到的文件进行分析,发现在 api.php 中存在一个 buy 函数,这应该就是我们买彩票的时候使用的函数,进行分析的:function buy($req){ require_registered(); require_min_money(2); $money = $_SESSION['money']; $numbers = $req['numbers']; $win_numbers = random_win_nums(); // 随机生成 $same_count = 0; for($i=0; $i<7; $i++){ if($numbers[$i] == $win_numbers[$i]){ // == 弱类型判断 $same_count++; } } switch ($same_count) { case 2: $prize = 5; break; case 3: $prize = 20; break; case 4: $prize = 300; break; case 5: $prize = 1800; break; case 6: $prize = 200000; break; case 7: $prize = 5000000; break; default: $prize = 0; break; } $money += $prize - 2; $_SESSION['money'] = $money; response(['status'=>'ok','numbers'=>$numbers, 'win_numbers'=>$win_numbers, 'money'=>$money, 'prize'=>$prize]); }
弱类型判断的总结
-
在我们上面对数据进行抓包后我们知道
因此抓包之后修改 numbers 变量为一个数组,其中的 7 个变量都是 true。放包之后就能够快速赚钱了,赚够钱后购买得到 flag。
{“action”:“buy”,“numbers”:[true,true,true,true,true,true,true]}
总结:
- 建议对所有的常见的漏洞进行一些总结,然后在打靶场的时候可以进行理论的分析
- 我们需要对 PHP == 和 === 的使用进行了解,这两个是非常大的出入点
- 建议拥有代码审计工具