CTFHub-文件上传

本文探讨了在CTF挑战中如何利用文件上传漏洞绕过前端验证,包括.htaccess文件利用、MIME类型欺骗、文件头检查规避、00截断技巧,以及双写后缀的实战应用,详细讲述了如何通过这些技术获取flag。

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

CTFHub-文件上传

无验证
前端验证
.htaccess
MIME绕过
文件头检查
00截断
双写后缀

无验证
  • 打开靶场获取信息,为无限制的文件上传,随便写入一个.php的一句话木马上传
    在这里插入图片描述
  • 上传成功并获取上传文件的相对路径
    在这里插入图片描述
  • 用post传参检测木马能否连接,测试连接成功。
    在这里插入图片描述
  • 使用蚁剑连接
    在这里插入图片描述
  • 在目录中获取flag
    在这里插入图片描述
前端验证
  • 打开靶场检查源码发现只允许我们上传.png .jpg .gif文件
    在这里插入图片描述

  • 考虑到为前端验证,且.php文件无法上传,我们可以上传一个带有一句话木马的.png然后在bp中修改后缀为.php
    在这里插入图片描述

  • 上传成功并获得相对路径
    在这里插入图片描述

  • 用post传参检查木马能否连接,连接成功
    在这里插入图片描述

  • 连接蚁剑
    在这里插入图片描述

  • 在目录中查找flag
    在这里插入图片描述

.hatsccess
  • 根据提示了解一下.htaccess
    .htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。那么根据.htaccess文件的特性,我们可以先上传一个.htaccess文件将原文件替换掉,该内容如下,作用为将所有文件解析为.php文件。
    在这里插入图片描述

  • 打开靶场,检查源代码,我们观察到.php文件时无法直接直接上传的
    在这里插入图片描述

  • 先上传.htaccess文件替换原文件后,再上传.png文件,在.htaccess文件的作用下,我们上传的.png文件会被解析为.php文件,上传成功后获得相对路径。
    在这里插入图片描述

  • 用post传参检查木马能否连接,连接成功
    在这里插入图片描述

  • 连接蚁剑
    在这里插入图片描述

  • 获取flag
    在这里插入图片描述

MIME绕过
  • 了解一下MIME是什么
    MIME类型校验就是我们在上传文件到服务端的时候,服务端会对客户端也就是我们上传的文件的Content-Type类型进行检测,如果是白名单所允许的,则可以正常上传,否则上传失败。
    也就时说,我们需要修改我们的Content-Type为白名单的内容

  • 直接上传.php文件时显示文件类型不正确
    在这里插入图片描述

  • 这时我们使用bp来修改上传文件Content-Type.
    在这里插入图片描述

  • 上传成功,获的相对路径,然后进行post传参检查木马能否连接,连接成功
    在这里插入图片描述

  • 连接蚁剑
    在这里插入图片描述

  • 获取flag
    在这里插入图片描述

文件头检查
  • 文件头检查
    顾名思义,其实就是是指当浏览器上传到服务器的时候,白名单进行的文件头检测,符合,则允许上传,否则不允许上传。先上传一个.php文件,给出提示,表名文件类型不正确,只允许上传.jpeg .png .gif类型文件
    在这里插入图片描述

  • 因为允许图片类型的文件上传,选择做一个图片木马
    在这里插入图片描述

  • 上传成功,并获得相对路径
    在这里插入图片描述

  • post传参检验木马能否连接,连接成功
    在这里插入图片描述

  • 连接蚁剑
    在这里插入图片描述

  • 获取flag
    在这里插入图片描述

00截断
  • 我们需要去了解一下php5.2 00截断的原理
    PHP的00截断是5.2.x版本的一个漏洞,当用户输入的url参数包含%00经过浏览器自动转码后截断后面字符。
    简单来说,当我们输入 cmd.php时候,输出的就是cmd.php
    但是当我们输入cmd.png%00.php,输出的是cmd.png
    • 打开靶场检查源码可知,可通过的文件后缀有.png .jpg .gif 在这里插入图片描述
    • 这时候通过bp使用 00截断 的方式上传.php文件
      在这里插入图片描述
  • 上传成功,此时文件上传路径为road=/var/www/html/upload/cmd.php%00,相对路径也就是/upload/cmd.php,然后通过post传参检查木马能否连接,连接成功
    在这里插入图片描述
  • 连接蚁剑
    在这里插入图片描述
  • 获取flag
    在这里插入图片描述
双写后缀
  • 了解一下双写后缀
    有些站点判断方式会把文件后缀名替换为空字符,通过双写后缀的方法,服务器把后缀名进行替换,替换成空字符之后为被替换的剩余字符组成了符合白名单的后缀名
  • 打开靶场检查源码,获得到可以通过的后缀名
    在这里插入图片描述
  • 直接上传.php文件后获得的相对路径没有后缀名,考虑到双写绕过

在这里插入图片描述在这里插入图片描述

  • 上传成功后获取正确的相对路径
    在这里插入图片描述

  • post传参检查木马能否连接,连接成功
    在这里插入图片描述

  • 连接蚁剑
    在这里插入图片描述

  • 获取flag
    在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值