一、相似扩展名绕过:使用相似的允许执行的扩展名,当中间件设置了允许解析的格式可用。一般php可以使用php3,php4等,asp可以使用aspx。
#apache中的httpd.conf文件设置成
AddType application/x-httpd-php .php .php3 .php4
#此时php,php3,php4都可以当作php解析
二、apache配置文件.htaccess绕过:通过apache配置文件把jpg后缀解析成php代码。
#1、上传.htaccess文件。文件内容:
AddType application/x-httpd-php .jpg
#此时jpg文件可以当作php文件解析
三、后缀名大小写绕过:一般服务器黑名单过滤字段中只写了文件后缀没转换大小写的情况下尝试。
黑名单过滤"php"时,此时可以传"PHP,PHp,pHp.Php"等尝试绕过。
四、后缀名加空格绕过:一般服务器文件后缀没有去除空格可尝试。
在"1.php"后面加上空格变为"1.php ",此时服务端获取的文件后缀为".php ",并非".php"
所以当验证时可以通过比对
五、后缀名加"."绕过:一般服务器文件后缀没有去除文件尾部的"."时可尝试。(仅限windows)
在"1.php"后面加上"."变为"1.php.",此时服务端获取的文件后缀为".php.",并非".php"
所以当验证时可以通过比对,在windows系统中文件名后缀最后面的"."可以被忽略,并且可以被执行。
六、后缀名加::$data绕过:利用windows下NTFS文件系统的特性,一般服务器文件后缀没有去除"::$data"时可尝试。(仅限windows)
在windows系统中,在"1.php"后面加上"::$data"变为"1.php::$data",
此时服务端获取的文件后缀为".php::$data.",并非".php",所以当验证时可以通过比对。
当我们访问"1.php::$data"就相当于执行了"1.php"。
七、后缀名加". ."绕过:一般服务器文件后缀只过滤了一遍的情况下可以尝试。(仅限windows)
在"1.php"后面加上". ."变为"1.php. .",此时服务端获取的文件后缀为".php. .",并非".php"
所以当验证时可以通过比对,当服务端先去除文件末尾的"."时文件后缀变成".php. ",然后服务端
去除末尾的空格变成".php."在windows系统中文件名后缀最后面的"."可以被忽略,并且可以被执行。
八、后缀名双写绕过:一般服务器文件后缀使用了repace替换关键字的方法时可以尝试。
当服务端使用了替换字符功能时,例如服务端把"php"替换为空串时,此时传入"1.php"
会被改成"1",当我们传入"1.pphphp"时此时这里的"p php hp"中的"php"变为空,最后变成"1.php"
此时就可以直接执行。