lottery

[src = 攻防世界] lottery

题目描述

WP

打开界面我们知道,要拿到flag,就要赢到足够的钱,其实一开始我以为可以找到一个地方直接修改余额什么的,把网页源代码中的文件看了几个都没发现突破口……

尝试了一下robots.txt,想看看有没有什么文件,然后发现了:

1
2
User-agent: *
Disallow: /.git/

应该是git源码泄露,下载GitHack(https://github.com/lijiejie/GitHack),并进行源码下载。(其实本题还提供了源码附件,直接下载就可以了)

发现在源码api.php中买彩票对关键代码:

lottery

可以看到$numbers 来自用户json输入 {“action”:”buy”,”numbers”:”1122334”},没有检查数据类型。 $win_numbers 是随机生成的数字字符串。

使用 PHP 弱类型松散比较,以”1”为例,和TRUE,1,”1”相等。 由于 json 支持布尔型数据,因此可以抓包改包,构造数据:

原来数据包为:

lottery

修改后为:

lottery

经过2-3次对购买彩票,就可以达到购买flag的余额。直接购买就得到flag:

lottery