文件上传漏洞总结

一、黑名单

黑名单,顾名思义只要出现在名单之中的后缀,都不能上传成功,这就是黑名单的过滤方式。

$deny_ext = array('.asp','.aspx','.php','.jsp');

在upload-labs中以上便是一个常见的黑名单写法,下面是在用if语句来验证获得的文件后缀是否在数组里。

if(!in_array($file_ext, $deny_ext))

这种过滤方式的弊端也很明显。

  • 如果过滤方式写的不严谨,内容不齐全。根据他的规则,只要没出现在黑名单中的后缀文件都可以上传成功。我们可以借助一些特殊的方式或者后缀。例如解析漏洞、特殊解析后缀php5(达成一些条件,也能解析成php文件)

  • 否则,只能利用一些特殊的绕过方法。例如%00截断,::$DATA

1、特殊解析后缀

由于黑名单过滤不严谨,导致有些特殊后缀上传后也能执行出PHP文件的效果。

apacha服务器的PHP2、php3、php4、phtml、pht文件后缀

在配置文件里加上下面这段话才可以。不知道什么原因,我在本地测试许久都没有解析成功。

AddType application/x-httpd-php .php .phtml .phps .php5 .pht

2、大小写转换

后端未将文件后缀进行统一格式的转换,而window系统对大小写不敏感,可以执行,从而进行绕过。

upload-labs第五关

在这里插入图片描述

3、.htaccess解析

它是一个配置文件,针对当前目录,里面存放着Apache服务器配置相关的指令。主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。

启用它需要将配置文件 httpd.conf 里的 AllowOverride 设置为All

上传 .htaccess 文件

<FilesMatch "gg.jpg">
SetHandler application/x-httpd-php
</FilesMatch>  

命名为.htaccess这个文件是伪静态文件也就是说,将文件中含有gg.jpg文件用PHP代码解析执行

在上传一张gg.jpg包含php代码的文件即可。

有时也可考虑上传以 .ini 文件

4、空格和点绕过

空格和点结尾的后缀文件。可以利用这一特性,将要上传的文件后缀加上点或者空格,从而绕过黑名单。有时根据绕过代码是只有一次过滤,可不止加一个点,进行绕过。

upload第十关 双点加空格

在这里插入图片描述

upload第八关 单点

在这里插入图片描述

upload第七关 单空格

在这里插入图片描述

有时思路需要开阔一点

5、::$DATA绕过

在window的时候如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,从而实现绕过。

upload 第九关

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值