CTFhub前端验证 MIME绕过

CTFhub前端验证 MIME绕过

前端验证

前端验证是在用户提交数据之前,在浏览器端检查输入数据是否符合要求

题目有限制只能上传特定后缀,所以我们在直接修改一句话木马的后缀为png,上传后bp抓包再改为php。这样就饶过了前端验证但是php依旧能在服务器端执行。

PixPin_2025-03-17_16-41-57

上传成功,获得文件上传路径

然后就是连接蚁剑PixPin_2025-03-17_16-39-17

PixPin_2025-03-17_16-39-45

MIME绕过

什么是 MIME 类型?

MIME是一种 标识文件类型的方式

当上传文件时,浏览器会向服务器发送 文件的 MIME 类型,例如:

1
Content-Type: image/png

这样,服务器就能知道 上传的是 PNG 图片。

MIME 绕过的核心原理

正常的文件上传逻辑

  1. 前端检查 MIME 类型

    1
    2
    3
    javascript复制编辑if(file.type !== "image/png") {
    alert("只允许上传 PNG 图片!");
    }

    绕过方式:修改 file.type,或直接禁用 JS 校验。

  2. 后端检查 MIME 类型

    1
    2
    3
    if($_FILES['file']['type'] !== "image/png") {
    die("上传的文件类型不正确!");
    }

    绕过方式

    • 修改请求头的 Content-Type
    • 伪造文件扩展名
    • 利用 PHP 解析漏洞
    • 双扩展名绕过

PixPin_2025-03-17_16-45-52

这里我们直接更改Content-Type。然后连接蚁剑。

PixPin_2025-03-17_16-47-18

PixPin_2025-03-17_16-47-35


CTFhub前端验证 MIME绕过
http://example.com/2025/03/18/CTFhub前端验证-MIME绕过/
作者
everythingis-ok
发布于
2025年3月18日
许可协议