一、大小写绕过(只适用windows)
filter:禁止.php .jsp .asp
原理:由于匹配时区分大小写,而解析时不区分大小写都可以解析,从而导致绕过黑名单。
示例:抓包,改文件名,任意选择被匹配的位置的字符串中的部分字符转换大小写即可。
.Php ==> .php
.jSP ==> .jsp
.AsP ==> .asp
二、空格绕过(只适用windows)
filter:禁止.php .jsp .asp
原理:在文件名的前面或者后面(主要是后面,因为一般过滤后缀名)添加空格,此时函数匹配不到,但是带有空格不影响解析。
示例:抓包,改文件名,在文件末尾添加空格。
"shell.php " ==> "shell.php"
filter并不认为".php "是".php"
"shell.php "是被当做"shell.php"解析的。
三、" . "绕过(不安全的Apache、NGINX配置文件)
原理:与空格绕过类似。
示例:.php
shell.php. ==> shell.php
补充:没太大用,真实环境没有*修改解析器配置文件。
四、::$data绕过(只适用windows)
原理:在windows中,访问 <file>::$data 就是访问文件本身,访问 <dir>:<file>::$data 就是访问dir文件夹中的 <file> 。
示例:抓包,改文件名,在文件末尾添加 ::$data 。
shell.php::$data ==> shell.php
五、双写绕过(filter将匹配值替换为空)
原理:删除指定字符串后的字符串刚好是黑名单中的内容。
示例:
shell.php ==> shell.pphphp
==> shell.PphpHP
补充:没太大用,很多都是正则替换,且忽略大小写。