
一、Lottery
打开靶场后发现加载缓慢,提供了源码。这是一个类似猜数字的游戏,选对 7 个号码即可得到相应奖励。
注册后随便输入 7 个数字发现一个也没中,花费了 2 元。
查看网站功能发现想要获取 flag 需要有相对应的余额。
思路是利用 BP 抓包看看能否修改余额。
尝试修改页面上的数字,但刷新后会变回原来的余额,无法直接修改。
检查猜数字页面访问的 api.php,进行代码审计。
核心代码如下:
//部分代码
function random_num(){
do {
$byte = openssl_random_pseudo_bytes(10, $cstrong);
$num = ord($byte);
} while ($num >= 250);
if(!$cstrong){ response_error('server need be checked, tell admin'); }
$num /= 25;
return strval(floor($num));
}
function random_win_nums(){
$result = '';
for($i=0; $i<7; $i++){
$result .= random_num();
}
;
}
{
();
();
= [];
= [];
= ();
= ;
(=; <; ++){
([] == []){
++;
}
}
() {
: = ; ;
: = ; ;
: = ; ;
: = ; ;
: = ; ;
: = ; ;
: = ; ;
}
+= - ;
[] = ;
([=>,=>, =>, =>, =>]);
}


