题目环境启动以后页面回显了一行字符串,丢进随波逐流里面以后发现解密不出来,如果有知道的大佬辛苦留言一下
没啥思路,想到题目名字叫备份是个好习惯,说不定网页目录下真有bak文件,于是就拿御剑扫描一下
扫完以后还真有
打开以后就是这样一段代码
点击查看代码
接下来就是代码审计了,
$str = strstr($_SERVER['REQUEST_URI'], '?');
// $_SERVER['REQUEST_URI']用来获取被访问链接的URI,也就是端口之后的数值,strstr('?')判断?是否在这个链接里,因此这里直接把参数拼接在url后即可
$str = substr($str,1);
// 截取第一个字符后的东西,相当于把?去掉了
$str = str_replace('key','',$str);
// 替换uri中的key为空字符,这里要做个绕过,可以用双写绕过
parse_str($str);
// 重点函数,将字符串解析成多个变量,例如"key1=240610708&key2=QNKCDZO",解析后,可以直接使用$key1和$key2作为变量使用
输出world
输出key1和key2的md5值
接下来就是md5的弱比较(有两个等于号),用数组或者md5值相同的两个数字(0e科学计数法绕过)。
但是源码显示key会被替换为空,那么我们就用双写绕过
接下来我们就可以构造flag了
?kekeyy1=240610708&kekeyy2=QNKCDZO
