上传漏洞科普[3]-MIME验证

昨天本站发表了文件上传漏洞之JS验证的演示代码,今天我们讨论MIME验证。

关于MIME

MIME的作用:使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。

更详细的介绍请访问这里:

MIME类型-服务端验证上传文件的类型

目录验证实例代码

<?php  

 /**  

  * Created by 独自等待  

 * Date: 14-1-22  

  * Time: 下午8:35  

 * Name: upload2.php  

  * 独自等待博客:http://www.waitalone.cn/  

  */ 

 //文件上传漏洞演示脚本之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);  

 }  

 ?>  

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

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

 <html xmlns="http://www.w3.org/1999/xhtml">  

 <head>  

     <meta http-equiv="Content-Type" content="text/html;charset=gbk"/>  

     <meta http-equiv="content-language" content="zh-CN"/>  

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

 <body>  

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

    

 <form action="" method="post" enctype="multipart/form-data" name="upload">  

     请选择要上传的文件:<input type="file" name="upfile"/>  

     <input type="submit" name="submit" value="上传"/>  

</form>  

 </body>  

</html> 

 

此代码严格意义上不算是目录验证问题,只是由于上传代码方面的问题,上传文件保存路径是客户端提交上去的,这样我们就很好绕过了。

MIME验证绕过方法:

关于如何判断服务端是MIME验证,这个我们可以多上传几次来测试即可,那么如何绕过呢? 直接更改上传数据包中的Content-type即可。

文件上传漏洞演示脚本
【via@独自等待

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值