html 文件上传校验,文件上传漏洞“MIME验证”绕过

可能很多人不知道什么是MIME?

不过没关系,那你一定听说过文件内容类型或者说通过抓包你一定听说过 Content-Type: text/html 这种类似的,其实,这就是MIME。下面再给大家简单说说吧!

MIME((Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式每个MIME类型由两部分组成,前面是数据的大类别,例如声音 audio、图象 Image等,后面定义具体的种类。

常见的MME类型,例如:

超文本标记语言文本 .html,html text/htm

普通文本   .txt text/plain

RTF文本. rtf application/rtf

GIF图形 .gif image/gif

JPEG图形 . jpg image/jpeg

一、MIME验证 示例代码

mime.php

//文件上传漏洞演示脚本之MIME验证

$uploaddir = 'uploads/';

if (isset($_POST['submit'])) {

if (file_exists($uploaddir)) {

if (($_FILES['upfile']['type'] == 'image/gif') || ($_FILES['upfile']['type'] == 'image/jpeg') ||

($_FILES['upfile']['type'] == 'image/png') || ($_FILES['upfile']['type'] == 'image/bmp')

) {

if (move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $_FILES['upfile']['name'])) {

echo '文件上传成功,保存于:' . $uploaddir . $_FILES['upfile']['name'] . "\n";

}

} else {

echo '文件类型不正确,请重新上传!' . "\n";

}

} else {

exit($uploaddir . '文件夹不存在,请手工创建!');

}

//print_r($_FILES);

}

?>

/p>

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

文件上传漏洞演示脚本--MIME验证实例

文件上传漏洞演示脚本--MIME验证实例

请选择要上传的文件:

二、文件上传漏洞“MIME验证”绕过方法

我们还是直接用上面的示例代码来本地测试一下,这里照样会用到抓包工具,我还是以 BurpSuite抓包工具来给大家演示一下;

关于如何判断服务端是MIME验证?这个我们可以多上传几次来测试即可!

1、MIME验证绕过方法也很简单,只需要直接更改上传数据包中的 Content-type 即可!

a07394b4277666d7859f9a8b8be44f5b.png

注意:MIME类型(Content-Type)和文件后缀这是两码事,千万不要搞混合了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值