lottery
开心!虽然第一次遇到git源码泄露写了好久,但是写出来了就很开心~~
打开界面我们知道,要拿到flag,就要赢到足够的钱,其实一开始我以为可以找到一个地方直接修改余额什么的,把网页源代码中的文件看了几个都没发现突破口……
然后又没思路了……
尝试了一下robots.txt,想看看有没有什么文件,然后发现了:
瞬间振奋.jpg
百度了一下发现应该是git源码泄露,下载了GitHack(下载地址)
然后用GitHack扫描url:
发现了api.php,这时候源码已经下载下来了,打开api.php的源码:
在买**这里的函数:
其中 $numbers 来自用户json输入 {"action":"buy","numbers":"1122334"},没有检查数据类型。 $win_numbers 是随机生成的数字字符串。
使用 PHP 弱类型松散比较,以"1"为例,和TRUE,1,"1"相等。 由于 json 支持布尔型数据,因此可以抓包改包,构造数据:
构造两次钱就够了(要注意当生成的win_number中不含0时才会得5000000,构造两次得的钱不够的话再构造一次就好了)