<?
include_once “flag.php”;
ini_set(“display_errors”, 0);
$str = strstr($_SERVER[‘REQUEST_URI’], ‘?’);
$str = substr($str,1);
$str = str_replace(‘key’,”,$str);
parse_str($str);
echo md5($key1);
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag.”取得flag”;
}
?>
这个题目有一个文件备份index.php.bak 然后打开完就是上面这玩意
strstr看符号第一次出现的位置
substr是截取?后面的值
str replace是把?后面所有有关key的值全部替换成空格
parse str将查询字符串解析到变量
我们通过kkeyey绕过第一个过滤 然后用到md5这个函数无法处理数组问题 变成key1[] 进行绕过 这样两个key返回的都是null
看其他博客有人提到科学计数法的绕过方式 放入开头是0e的md5就可以 相当于0*10的n次方 这个是==比较漏洞