【文件上传绕过】十、利用后缀名双写绕过


一、实验环境
  • 服务端对敏感后缀名替换为空

本pass会从文件名中去除.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf|.htaccess字符!

二、源码
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");

        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = str_ireplace($deny_ext,"", $file_name);// 符合黑名单中的后缀替换为空
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = UPLOAD_PATH.'/'.$file_name;        
        if (move_uploaded_file($temp_file, $img_path)) {
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

从源码中可以发现,源码中定义了黑名单列表,我们上传文件的后缀名凡是符合黑名单中任意一个后缀都会被替换为空,那么我们可以利用双写后缀的方式进行绕过。
例如:phpinfo.pphphp替换后变成phpinfo.php

三、双写后缀进行绕过

上传文件

在这里插入图片描述
访问文件

在这里插入图片描述
查看上传到服务端的文件后缀

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
文件上传漏洞的文件后缀名绕过是一种常见的攻击技术,攻击者通过修改文件的后缀名绕过服务器对上传文件类型的限制。这种攻击方式利用了服务器端对文件类型的验证不严谨或者不完善。 攻击者可以通过以下几种方式来实现文件后缀名绕过: 1. 修改文件后缀名:攻击者可以将一个可执行的文件(如PHP脚本)的后缀名修改为服务器允许上传的文件类型的后缀名(如.jpg、.png等)。这样服务器在验证文件类型时会认为该文件是合法的图片文件,但实际上是一个可执行的脚本文件。 2. 双重后缀名:攻击者可以将一个可执行的文件命名为双重后缀名,例如将一个PHP脚本命名为"image.jpg.php"。服务器在验证文件类型时只会检查最后一个后缀名,因此会认为该文件是一个图片文件,但实际上是一个可执行的脚本文件。 3. MIME类型欺骗:攻击者可以通过修改HTTP请求头中的Content-Type字段来欺骗服务器。攻击者可以将一个可执行的脚本文件的Content-Type字段设置为服务器允许上传的文件类型,从而绕过服务器对文件类型的验证。 以上是一些常见的文件后缀名绕过技术,攻击者利用这些技术可以上传恶意文件到服务器,从而进行进一步的攻击。为了防止文件上传漏洞,服务器端应该对上传的文件进行严格的验证和过滤,包括验证文件的后缀名、MIME类型以及文件内容的合法性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多学点技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值