[ctfshow web入门] web25
信息收集
要想拿到flag,需要突破两层if。
解题
第一个if
传入r=0,拿到mt_rand的值,由于每一次访问都会重新设置种子,所以每一次访问都是一样的随机数。
所以我们的r = mt_rand-显示的值 = 1799250188
r=1799250188就可以突破第一层if了
第二层if
题目里给了个工具,他能根据第一个随机数反推种子的值。下载下来,刚好我有一台linux kali,在linux里编译,然后传给他随机数即可
当然,你说没有linux,也没有工具要怎么办
那当然是用对应版本的php硬跑啊,种子从0-0xffffffff,一个个试效果是一样的。这就是爆破
拿着跑出来的种子,生成随机数,第一个随机数不要。第二和第三个相加即是结果
在线php: https://www.jyshare.com/compile/1/
把拿到的随机数放置到cookie里,与前面的用分号;
隔开,拿到flag
如果你跑出来的随机数不对,不要着急,对应版本,那个c语言工具也是有php版本的,不同版本对应不同随机数,运行的php版本也需要对应。
web24 目录 web26