[src = 攻防世界] lottery
题目描述
WP
打开界面我们知道,要拿到flag,就要赢到足够的钱,其实一开始我以为可以找到一个地方直接修改余额什么的,把网页源代码中的文件看了几个都没发现突破口……
尝试了一下robots.txt,想看看有没有什么文件,然后发现了:
1 | User-agent: * |
应该是git源码泄露,下载GitHack(https://github.com/lijiejie/GitHack),并进行源码下载。(其实本题还提供了源码附件,直接下载就可以了)
发现在源码api.php中买彩票对关键代码:
可以看到$numbers 来自用户json输入 {“action”:”buy”,”numbers”:”1122334”},没有检查数据类型。 $win_numbers 是随机生成的数字字符串。
使用 PHP 弱类型松散比较,以”1”为例,和TRUE,1,”1”相等。 由于 json 支持布尔型数据,因此可以抓包改包,构造数据:
原来数据包为:
修改后为:
经过2-3次对购买彩票,就可以达到购买flag的余额。直接购买就得到flag: