Bugku-备份是个好习惯
1.打开网站,看到一串md5,解密发现:
2.暂时用不上,看源码,看题目意思,扫一下目录:
3.下载下来看一下:
简单意思就是这样一个url:127.0.0.1/index.php?key1=123&key2=456,
先用$_SERVER[‘REQUEST_URI’]取出index.php?key1=123&key2=456,
再用strstr函数取出?key1=123&key2=456,
再用substr函数取出key1=123&key2=456,
然后用str_replace替换掉里面的key,变成1=123&2=456,
再使用parse_str函数:
也就是说,经过这个函数,在php文件内部,不管存不存在$key1和$key2,都会有$key1=123,$key2=456,所以这个函数是有变量覆盖漏洞的。我们输入key1=123,就会把文件内的$key1原来的值替换掉。
然后后面的那个md5判断就很容易绕过了,两种绕过方法:[BJDCTF2020]Easy MD5(详细)
然后我们就应该输入:
http://123.206.87.240:8002/web16/index.php?key1[]=123&key2[]=456
但是在这之前,它会把我们的key替换为空,但是这个函数是有缺陷的,它只会替换一次遍历,不会循环遍历替换:
所以最后我们的payload:
http://123.206.87.240:8002/web16/index.php?kekeyy1[]=123&kkeyey2[]=456