
一、Lottery
打开靶场后发现加载缓慢,并提供了源码。该网站类似猜数字游戏,选对 7 个号码即可得到相应奖励。

注册后输入 7 个数字发现未中奖。

尝试点击功能发现获取 Flag 需要对应余额。

思路是通过 BP 抓包修改余额。

直接修改页面上的数字刷新后会恢复原状,无法通过前端修改余额。

检查猜数字页面的 API 接口 api.php 进行代码审计。核心逻辑是随机生成七位数字,然后使用两个等号 == 判断传入数字与随机生成的数字是否相等。由于 PHP 弱类型比较特性,可利用 true 绕过验证。

代码如下
//部分代码
function random_num(){
{ = (, ); = (); } ( >= );
(!){ (); }
/= ; (());
}
{
= ;
(=; <; ++){ .= (); }
;
}
{
(); ();
= [];
= [];
= ();
= ;
(=; <; ++){ ([] == []){ ++; } }
() {
: = ; ;
: = ; ;
: = ; ;
: = ; ;
: = ; ;
: = ; ;
: = ; ;
}
+= - ;
[] = ;
([=>,=>, =>, =>, =>]);
}










