一、大小写绕过
根据操作系统的特性,这就不在细讲:
".php"可以替换为“.PHp”等等
二、空格或者“.”绕过
需要用bp去修改数据包,因为系统特性并不会去除所以最后还是所上传脚本的格式
.php.
三、 ::$DATA绕过
必须是Windows系统,必须是php环境,必须是那个源文件
原理:php在windows系统的时候如果文件名+“::$DATA”会把该词之后的数据当成文件流处理不会检测文件后缀名
例如: shell.php -- shell.php::$DATA
四、双后缀名绕过
在进行上传的时候有的情况会将字符串里的php替换为空
一次过滤:shell.php -- shell.phpphp
五、白名单绕过 %00
在某些情况下直接在文件名处截断是没用的,因为%00会被解析,只有在数据包中含有文件上传目录时才能利用
%00截断原理
www.xxx.com/shell.jpg
www.xxx.com/shell.php%00.jpg => www.xxx.com/shell.php
%00截断GET用法:
%00截断:php5.3版本以下GET提交不需要解码,直接在get文件目录处截断
%00截断POST用法
当是POST接收情况的时候,正确的用法应该是我们需要对 %00 做一个URL解码
为什么两者用法不同
这是因为 %00 截断在 GET 中被 url 解码之后是空字符。但是在 POST 中 %00 不会被 url 解码,所以只能通过 burpsuite 修改 hex 值为 00 进行截断