这道题先用敏感文件泄露工具扫到了.git文件泄露,于是用githack将文件还原进行代码审计。。。
漏洞处在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++;
}
}
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 = $req['numbers'