第12关(%00截断)
我们查看代码,发现代码有漏洞的地方在于使用$_GET['save_path']来组成上传路径,这样我们就可以尝试使用%00截断来进行绕过
%00截断的原理:当系统在处理文件名或文件内容时遇到ASCII码为0的字符(即十六进制的0x00),它会认为字符串已经结束。在Web应用中,攻击者可能会尝试上传恶意文件,如PHP Shell或WebShell,但这些文件通常会被安全策略阻止。通过在文件名后添加%00(在URL编码中对应于实际的0x00字符),攻击者可以欺骗服务器认为文件名在此结束,从而尝试执行恶意文件。(这个是网上搜的原理)比如:..upload/test.php%00xx.jpg会被截断后面的%00xx.jpg,从而只保留test.php这个文件,但我们要注意%00是在路径上使用的(这个要考)
当然需要注意,%00截断的使用是有前提条件的,首先php<5.3.29,同时我们还必须关闭magic_quotes_gpc (魔术引号),因为魔术引号会对单引号、双引号、反斜杠和空字符进行转换,并且还会对$_GET、$_POST、$_REQUEST等内容进行过滤
关于php的版本问题,由于我这之前使用的是phpstudy_pro搭建的靶场,不知道是不是软件的原因,导致我不能下载php的5.2.17版本,我又不想删了重新配置,感觉很麻烦,所以我就又下了个phpstudy2018的版本,如果有人也是这样的问题,并且删了重新下也不行,大家可以看这篇文件下载phpstudy2018试试PhpStudy2018安装-CSDN博客