题目
详解
我们扫了一遍,注册处也没有什么问题
然后发现了,robots下有一个/.git/
很明显提示了我们git源码泄露
那么我们使用githack
https://github.com/lijiejie/GitHack
当然我们在使用git之前,必须安装git,否则就会出现这种问题
源码下载完成以后,
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]);
}
function flag($req){
global $flag;
global $flag_price;
require_registered();
$money = $_SESSION['money'];
if($money < $flag_price){
response_error('you don\' have enough money');
} else {
$money -= $flag_price;
$_SESSION['money'] = $money;
$msg = 'Here is your flag: ' . $flag;
response(['status'=>'ok','msg'=>$msg, 'money'=>$money]);
}
}
在api。php中我们查看这两个函数
buy和flag
if($numbers[$i] == $win_numbers[$i]){ $same_count++; }
他这儿是两个等于号
是一个弱类型的等于
php弱类型,强类型判断见这里
https://www.cnblogs.com/Mrsm1th/p/6745532.html
== 在进行比较的时候,会先将字符串类型转化成相同,再比较
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行
抓包进行修改,因为1和true相等,
那么我们多写几个true
就可以进行购买flag了
修改后
{“action”:“buy”,“numbers”:[true,true,true,true,true,true,true]}
代码中是7,弱类型,一位一位比较,七个true