数据类型对比漏洞(攻防_Lottery) - 图1

    这道题一进去就有一个附件。下载附件。有一堆的源码 数据类型对比漏洞(攻防_Lottery) - 图2

    这题可能有源码泄露,比如说robots.txt里有.git

    数据类型对比漏洞(攻防_Lottery) - 图3

    所以呢。注册完一系列的东西。发现这题就是个六合彩的形式,让你猜出现的数字获得钱,然后用钱买flag:

    数据类型对比漏洞(攻防_Lottery) - 图4

    可是这中奖概率太低了。


    这可能需要一段时间,需要PHP很好的基础和很长的时间才能找到在api.php中有问题

    数据类型对比漏洞(攻防_Lottery) - 图5

    找出关键的代码

    数据类型对比漏洞(攻防_Lottery) - 图6


    **
    我们要绕过这个$win_numbers,$win_numbers我们是无法控制的,毕竟函数在人家服务器上运行,我们只能输入数字,那么就只能在输入上做文章了,89行判断相等的数字个数时,用的是==,这不就是个弱类型漏洞吗,bool类型的true是可以和任何数据弱类型相等的,于是输入,抓包改包来刷钱。而且我们发现require是json格式的**

    数据类型对比漏洞(攻防_Lottery) - 图7

    数据类型对比漏洞(攻防_Lottery) - 图8


    如 if(true == 任何非零的数字) 会返回 true
    由于使用的是PHP 弱类型比较,TRUE,1,”1”都相等相等,即true与字符串和数字都是弱相等的。而且,由于 json 支持布尔型数据,那么就可以构造一串数组[true,true,true,true,true,true,true]传入了,

    bp抓包,然后构造数组,即可得到5000000,再来一次就是10000000,可以购买flag了