❝
大家好!我是一个热衷于分享IT技术的up主。在这个公众号里,我将为大家带来最新、最实用的技术干货,从编程语言到前沿科技,从软件开发到网络安全。希望通过我的分享,能够帮助更多的小伙伴提升技术水平,共同成长!欢迎关注,一起探索科技的魅力吧!
关卡简介
Upload-Lab
的第11关挑战涉及到文件上传中的黑名单验证。黑名单验证是一种常见的安全措施,旨在通过禁止特定文件类型的上传来防止恶意文件。然而,攻击者可以通过双写绕过等技术来规避这些限制。本关卡的目标是通过双写绕过技术上传一个恶意文件,绕过服务器的黑名单验证。
分析
通过观察源码,发现一句代码存在漏洞,代码如下:
$file_name = str_ireplace($deny_ext,"", $file_name);
❝
这句代码的意思是将
$file_name
中所有与$deny_ext
列表中的字符串相匹配的部分删除,不区分大小写。具体来说,str_ireplace
函数在$file_name
中查找$deny_ext
列表中的每一个字符串,并将其替换为空字符串(即删除它们)。
示例:
-
$file_name
为"shell.pphphp"
-
$deny_ext
为array("php", "exe", "bat")
执行后:
-
查找
php
并删除(因为不区分大小写,所以也会匹配PHP
)。 -
结果为
"shell.php"
解法步骤
-
准备恶意文件
创建一个简单的 PHP 文件,例如 shell.pphphp
,内容如下:
<?php @eval($_POST['123']); ?>
-
上传文件
打开浏览器,进入Upload-Lab
第11关的上传页面,选择 hell.pphphp
文件进行上传,上传成功后,如下图所示,文件名后缀被修改成php
-
验证 webshell
打开中国蚁剑,建立连接,测试连接是否成功,如下图所示:
总结
在 Upload-Lab
第11关,通过双写绕过技术成功上传并解析了恶意 PHP 文件。该方法利用了服务器在处理文件名时的漏洞,绕过了黑名单验证,达到了攻击目的。这种绕过技术在实际应用中具有很强的实用性,理解和掌握它有助于提升我们对文件上传漏洞的防护能力。
推荐阅读
原文始发于微信公众号(攻城狮成长日记):Upload-Lab第11关:如何巧妙使用双写绕过黑名单验证
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论