xuenixiang_2020_web_web50
结合题目提示, 猜测有源码泄露, 访问 index.php.bak 直接把源码下载下来进行审计. 下面是部分关键代码<?php
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);
echo $key1;
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
echo $flag."取得flag";
}
?>
第二行获取了 url 问号后的全部字符串, 比如传入的是 localhost:/index.php?key=sheldon, 得到的结果是 $str="?key=sheldon".
第三行去除掉问号, 第四行把'key'替换成空, parse_str() 函数把查询字符串解析到变量中。
当你传入? key1=a&key2=b 的时候 经过过滤会变成 1=a&2=b 此时可以采用双写绕过, 传入? kekeyy1=a&?keleyy2=b, 经过过滤后会得到 key1=a&key2=b.
下面的比较 md5 比较函数就是典型的 php 弱类型绕过, 输入两个 md5 值为 0e 开头的字符串即可绕过
payload:http://120.24.86.145:8002/web16/index.php?kekeyy1=s878926199a&kekeyy2=s155964671a
flag:动态flag,别懒···
页:
[1]