靶场 upload-labs pass11-20

本文详细介绍了在upload-labs靶场中pass-11至pass-20的破解过程,涉及文件后缀黑名单、白名单、路径截断、文件头过滤、条件竞争等安全漏洞利用技巧,以及如何利用图片马和Apache解析漏洞来绕过上传限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pass-11

这里本关中,对后缀名有一个黑名单,若后缀出现黑名单中的字符,则将它替换为空。下面是源码。在这里插入图片描述我们就可以利用这一点了。它只替换其中的一次,那构造一个复写的可能可以饶过它。在这里插入图片描述

连一下试试
在这里插入图片描述

pass-12

看源码,发现是白名单的,就只能上传jpq,gif,png。提示文件路径可控。在这里插入图片描述源码中$file_arr 的目的是 将.后的文件后缀名取出来
$img_path 以 post 方式传入文件保存路径 ,这里是采用拼接的方式,有机可乘。
抓包看看有什么信息。
在这里插入图片描述url中我们可以看到save_php字段,请求头中有Content-Disposition中作为下载文件的标识字段。在这里是作为校验,并且拼接文件上传路径。
了解到这些后,我们要先饶过上传,改Content-Disposition字段中filename文件后缀名,饶过检查。此外,我们还要保证上传的是php文件,那就要利用到路径的拼接和截断字符,把我们改了的文件后缀名失效掉

bug.php%00bug.gif 上传后 php后面就没有了

在这里插入图片描述放包后上传成功。在这里插入图片描述
连接时我们拖拽那个图片文件得到的url要将php后面的多余的字符删除掉。这样就连接成功了。这是因为我们上传到文件路径中的文件就是php文件。
在这里插入图片描述

pass-13

源码和12关一样,抓包看看有啥区别。
在这里插入图片描述他的save_path不在url中,我们还是一样的思路,只是截断字符不一样了。
在save_path写入的php后面写上一个占位符。
在这里插入图片描述
在点入hex(16进制编码)中找到它,
在这里插入图片描述找到我们要改的地方。改了为00截断字符
在这里插入图片描述
上传成功在这里插入图片描述

pass 14

图片马。先看源码

function getReailFileType($filename){
   
    $file = fopen($filename, "rb");
    $bin = fread($file, 2);   //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);    
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    
    $fileType = '';    
    switch($typeCode){
         
        case 255216:            
            $fileType = 'jpg';
            break;
        case 13780:            
            $fileType = 'png';
            break;        
        case 7173:            
            $fileType = 'gif';
            break;
        default:            
            $fileType = 
### 关于 upload-labs Pass-12 的解决方案 #### 背景介绍 upload-labs 是一个用于学习和测试文件上传漏洞的靶场,其中包含了多个级别的挑战。Pass-12 特别关注通过特定条件下的文件上传绕过验证机制来实现攻击[^2]。 #### 漏洞分析 在 Pass-12 中,服务器端设置了较为严格的文件名过滤规则以及 MIME 类型检测。然而,在实际环境中可能存在某些配置不当之处可以被利用: - **MIME Type 绕过**: 即使服务端进行了 MIME 类型校验,但如果仅依赖客户端提供的 Content-Type 头部,则可以通过修改请求头中的内容类型来进行绕过尝试。 - **文件扩展名检查不足**: 如果只简单地基于黑名单模式阻止已知危险类型的文件(如 .php),那么攻击者仍有可能找到未被列入黑名单的安全扩展名并执行恶意脚本。 为了成功完成此关卡的任务,需要理解如何构造特殊格式的数据包以规避上述防护措施[^4]。 #### 实现方法 以下是针对该级别的一种可能解法思路: ```bash curl -X POST \ http://localhost/upload-labs-master/Pass-12/index.php \ -F "file=@test.jpg;type=image/jpeg" \ -H 'Content-Type: multipart/form-data' ``` 这段命令展示了如何使用 `cURL` 工具发送带有自定义 MIME 类型 (`image/jpeg`) 和文件名 (`.jpg` 扩展) 的 HTTP 请求给目标 URL 。这里的关键在于即使上传的是 PHP 文件,也可以伪装成图片或其他无害文件形式提交上去[^3]。 需要注意的是,具体实施时还需考虑更多细节因素,例如服务器的具体版本、中间件特性等都会影响最终效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值