其他分享
首页 > 其他分享> > 攻防世界 lottery

攻防世界 lottery

作者:互联网

进入题目是一个类似于买彩票的东西我们先去注册个账号,然后发现可以buy flag,大概理解题目意思,我们要么只能在买彩票的时候让我们中大奖要么只能改变自己的余额,原题目应该使用dirsearch扫描发现git泄露然后使用Githack复原的但是攻防世界这边直接把源码给了我们

源码中关键函数在api.php中在api.php中我们注意到requests是json格式的

header('Content-Type: application/json');

我们重点来看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]);
}

其中win_numbers中的数字是随机生成0-6的数字,然后和用户输入的数字进行比较如果达到几个相同就返回对应的奖金给他,这里可以使用php弱类型比较(当然欧皇除外),当true和一个数字或一个字母比较的时候永远返回true,在购买彩票的时候我们进行抓包

 

 

然后我们多发几次直到钱够买flag

 

 

 成功购买到flag

标签:攻防,buy,lottery,win,世界,flag,numbers,money,php
来源: https://www.cnblogs.com/haohao1/p/16420962.html