背景知识
dirsearch扫描
题目
原题目应该使用dirsearch扫描发现git泄露然后使用Githack复原的但是攻防世界这边直接把源码给了我们
下载附件可得到
打开文件后进行代码审计
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]);
}
其中win_numbers中的数字是随机生成0-6的数字,然后和用户输入的数字进行比较如果达到几个相同就返回对应的奖金给他,这里可以使用php弱类型比较当true和一个数字或一个字母比较的时候永远返回true。
使用bp修改post参数购买flag
把post数据修改为
{"action":"buy","numbers":[true,true,true,true,true,true,true]}
多发送几次
得到flag
参考学习链接:
【愚公系列】2023年05月 攻防世界-Web(lottery)_攻防世界lottery_愚公搬代码的博客-CSDN博客 攻防世界 Lottery web进阶高手区 详解