从零攻破MRCTF2020文件上传题.htaccess的魔法解析术第一次接触CTF比赛中的文件上传漏洞题目时很多人会陷入一个误区——认为只要上传一个伪装成图片的PHP文件就能轻松拿下flag。但现实往往会给新手们当头一棒就像MRCTF2020这道你传你呢题目展示的那样。本文将带你用侦探般的思维一步步拆解这个看似简单实则暗藏玄机的文件上传题重点揭秘.htaccess文件在Apache服务器中的神奇作用。1. 初探题目当常规上传方法失效时启动靶场环境后我们面对的是一个看似普通的文件上传界面。大多数新手的第一反应是尝试上传一个伪装成图片的PHP木马GIF89a? ?php eval($_POST[cmd]); ?将上述内容保存为shell.png后尝试上传系统竟然接受了这个文件但先别高兴太早——当你尝试访问这个文件时会发现服务器只是将其当作普通图片输出完全没有执行其中的PHP代码。这时候传统的后缀名绕过方法如.php5,.phtml也纷纷失效。常见新手错误不断尝试各种PHP变种后缀.php3,.phps等修改文件内容头部的魔术字节如GIF89a使用Burp Suite重复拦截修改请求这些方法之所以失败是因为题目设计者已经堵死了常规的文件上传漏洞利用路径。此时需要转换思路既然无法直接上传可执行脚本能否让服务器误认为我们上传的图片是PHP文件2. 发现关键.htaccess的解析漏洞Apache服务器的.htaccess文件是一个分布式配置文件它能够覆盖主配置文件的设置实现目录级别的控制。更重要的是它可以重新定义文件的处理方式——这正是我们需要的突破口。.htaccess的典型应用场景包括URL重写与重定向自定义错误页面限制IP访问修改文件类型处理器我们需要利用最后这个特性。具体来说可以创建一个.htaccess文件内容如下FilesMatch shell.png SetHandler application/x-httpd-php /FilesMatch这段配置的意思是将所有名为shell.png的文件当作PHP脚本来解析执行。注意几个关键点FilesMatch中的文件名必须与你上传的图片木马完全一致该配置只对当前目录及其子目录有效服务器必须允许.htaccess覆盖配置通常CTF题目中都是允许的3. 完整攻击链的构建与实践现在让我们梳理完整的攻击步骤准备阶段创建图片木马shell.png内容包含PHP代码创建.htaccess配置文件指定处理规则上传阶段首先上传shell.png然后上传.htaccess文件顺序很重要先传规则再传文件可能被拦截验证阶段访问shell.png应该看到空白页而非图片内容使用POST请求发送命令如cmdsystem(ls);获取flag通常flag位于根目录执行cmdsystem(cat /flag);有时需要遍历目录尝试cmdprint_r(scandir(/));关键技巧表格操作环节注意事项常见错误文件命名保持.htaccess和木马文件名一致大小写不匹配上传顺序先传木马再传配置文件顺序颠倒导致拦截权限检查确保上传目录有执行权限未检查目录权限连接测试使用POST而非GET请求混淆请求方法4. 深度防御为什么这种攻击会成功理解漏洞原理比单纯复现更重要。这种攻击之所以可行源于三个关键因素Apache的灵活性允许通过.htaccess覆盖全局配置弱文件类型检测仅检查文件内容头而非完整验证配置不当未限制.htaccess文件的上传在实际渗透测试中这种攻击方式对以下场景特别有效允许上传任意文件的博客系统用户可自定义配置的内容管理系统未严格过滤配置文件的网盘应用防御方案对比防御措施有效性实施难度禁用.htaccess★★★★★★★☆限制上传文件类型★★★☆☆★★★文件内容严格验证★★★★☆★★★★存储文件重命名★★★★★★★☆5. 拓展训练在BUUCTF上的类似题目掌握了.htaccess技巧后你可以在BUUCTF平台上尝试以下类似题目巩固技能[极客大挑战 2019]Upload需要结合图片马和.htaccess考察对MIME类型的理解[SUCTF 2019]CheckIn更严格的上传过滤需要特殊技巧绕过内容检测[NCTF2019]Fake XML cookbook文件上传与XXE的结合展示.htaccess的多功能性练习时建议记录以下信息题目名称及考察点尝试过的失败方法最终突破的关键步骤值得记录的特殊技巧6. 从CTF到实战安全开发的启示虽然这是在CTF环境中但这种漏洞在真实网站中并不罕见。2019年某知名CMS就曾爆出类似的漏洞攻击者利用上传的.htaccess文件接管了数千个网站。作为开发者应当严格限制上传文件类型禁用不必要的配置文件覆盖对用户上传内容进行隔离存储定期进行安全审计而对于安全研究人员理解这些底层机制不仅能解决CTF题目更能培养发现真实漏洞的敏锐嗅觉。下次遇到文件上传功能时不妨多问一句这个系统会如何处理我上传的.htaccess文件在最近的一次渗透测试中我发现一个企业网站虽然禁止了PHP文件上传却忽略了.htaccess的限制。通过上传自定义配置成功将SVG图像转换为服务器端脚本执行。这种思路的变种应用正是CTF训练带给我们的实战价值。
新手也能搞定的BUUCTF靶场实战:用.htaccess绕过文件上传限制,拿下MRCTF2020那道‘你传你呢’
发布时间:2026/6/6 8:40:58
从零攻破MRCTF2020文件上传题.htaccess的魔法解析术第一次接触CTF比赛中的文件上传漏洞题目时很多人会陷入一个误区——认为只要上传一个伪装成图片的PHP文件就能轻松拿下flag。但现实往往会给新手们当头一棒就像MRCTF2020这道你传你呢题目展示的那样。本文将带你用侦探般的思维一步步拆解这个看似简单实则暗藏玄机的文件上传题重点揭秘.htaccess文件在Apache服务器中的神奇作用。1. 初探题目当常规上传方法失效时启动靶场环境后我们面对的是一个看似普通的文件上传界面。大多数新手的第一反应是尝试上传一个伪装成图片的PHP木马GIF89a? ?php eval($_POST[cmd]); ?将上述内容保存为shell.png后尝试上传系统竟然接受了这个文件但先别高兴太早——当你尝试访问这个文件时会发现服务器只是将其当作普通图片输出完全没有执行其中的PHP代码。这时候传统的后缀名绕过方法如.php5,.phtml也纷纷失效。常见新手错误不断尝试各种PHP变种后缀.php3,.phps等修改文件内容头部的魔术字节如GIF89a使用Burp Suite重复拦截修改请求这些方法之所以失败是因为题目设计者已经堵死了常规的文件上传漏洞利用路径。此时需要转换思路既然无法直接上传可执行脚本能否让服务器误认为我们上传的图片是PHP文件2. 发现关键.htaccess的解析漏洞Apache服务器的.htaccess文件是一个分布式配置文件它能够覆盖主配置文件的设置实现目录级别的控制。更重要的是它可以重新定义文件的处理方式——这正是我们需要的突破口。.htaccess的典型应用场景包括URL重写与重定向自定义错误页面限制IP访问修改文件类型处理器我们需要利用最后这个特性。具体来说可以创建一个.htaccess文件内容如下FilesMatch shell.png SetHandler application/x-httpd-php /FilesMatch这段配置的意思是将所有名为shell.png的文件当作PHP脚本来解析执行。注意几个关键点FilesMatch中的文件名必须与你上传的图片木马完全一致该配置只对当前目录及其子目录有效服务器必须允许.htaccess覆盖配置通常CTF题目中都是允许的3. 完整攻击链的构建与实践现在让我们梳理完整的攻击步骤准备阶段创建图片木马shell.png内容包含PHP代码创建.htaccess配置文件指定处理规则上传阶段首先上传shell.png然后上传.htaccess文件顺序很重要先传规则再传文件可能被拦截验证阶段访问shell.png应该看到空白页而非图片内容使用POST请求发送命令如cmdsystem(ls);获取flag通常flag位于根目录执行cmdsystem(cat /flag);有时需要遍历目录尝试cmdprint_r(scandir(/));关键技巧表格操作环节注意事项常见错误文件命名保持.htaccess和木马文件名一致大小写不匹配上传顺序先传木马再传配置文件顺序颠倒导致拦截权限检查确保上传目录有执行权限未检查目录权限连接测试使用POST而非GET请求混淆请求方法4. 深度防御为什么这种攻击会成功理解漏洞原理比单纯复现更重要。这种攻击之所以可行源于三个关键因素Apache的灵活性允许通过.htaccess覆盖全局配置弱文件类型检测仅检查文件内容头而非完整验证配置不当未限制.htaccess文件的上传在实际渗透测试中这种攻击方式对以下场景特别有效允许上传任意文件的博客系统用户可自定义配置的内容管理系统未严格过滤配置文件的网盘应用防御方案对比防御措施有效性实施难度禁用.htaccess★★★★★★★☆限制上传文件类型★★★☆☆★★★文件内容严格验证★★★★☆★★★★存储文件重命名★★★★★★★☆5. 拓展训练在BUUCTF上的类似题目掌握了.htaccess技巧后你可以在BUUCTF平台上尝试以下类似题目巩固技能[极客大挑战 2019]Upload需要结合图片马和.htaccess考察对MIME类型的理解[SUCTF 2019]CheckIn更严格的上传过滤需要特殊技巧绕过内容检测[NCTF2019]Fake XML cookbook文件上传与XXE的结合展示.htaccess的多功能性练习时建议记录以下信息题目名称及考察点尝试过的失败方法最终突破的关键步骤值得记录的特殊技巧6. 从CTF到实战安全开发的启示虽然这是在CTF环境中但这种漏洞在真实网站中并不罕见。2019年某知名CMS就曾爆出类似的漏洞攻击者利用上传的.htaccess文件接管了数千个网站。作为开发者应当严格限制上传文件类型禁用不必要的配置文件覆盖对用户上传内容进行隔离存储定期进行安全审计而对于安全研究人员理解这些底层机制不仅能解决CTF题目更能培养发现真实漏洞的敏锐嗅觉。下次遇到文件上传功能时不妨多问一句这个系统会如何处理我上传的.htaccess文件在最近的一次渗透测试中我发现一个企业网站虽然禁止了PHP文件上传却忽略了.htaccess的限制。通过上传自定义配置成功将SVG图像转换为服务器端脚本执行。这种思路的变种应用正是CTF训练带给我们的实战价值。