文章目錄
第一章 服務器端檢測–MIME 類型
MIME (Multipurpose Internet Mail Extensions) 是描述消息內容類型的因特網標準。MIME 消息能包含文本、圖像、音頻、視頻以及其他應用程序專用的數據。
【https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types】
常見的MIME 類型如下
文件擴展名 | Mime-Type |
---|---|
.js | application/x-javascript |
.html | text/html |
.jpg | image/jpeg |
application/pdf | |
.png | image/png |
在HTTP 協議中,使用Content-Type 字段表示文件的MIME 類型
。當我們上傳文件的時候,抓到HTTP 數據包。
第二章代碼審計-源代碼
在服務器端會檢測Content-Type 類型,upload-labs 第二關,經典的代碼如下
if (isset($_POST['submit'])) {
if (file_exists($UPLOAD_ADDR)) {
if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {
$img_path = $UPLOAD_ADDR . $_FILES['upload_file']['name'];
$is_upload = true;
}
} else {
$msg = '文件類型不正確,請重新上傳!';
}
} else {
$msg = $UPLOAD_ADDR.'文件夾不存在,請手工創建!';
}
}
由於服務器在檢測Content-Type 類型的時候,取得的變量來自於用戶,所以可以用Burp 抓包,修改這個字段,使其合法,即可繞過限制上傳任意文件。
第三章MIME服務器端繞過案例
第一步 上傳.jpg文件 上傳成功 查看圖片
第二步 上傳.php文件 查看提示錯誤信息
第三步 使用burp抓包 更改type類型
第四步 查看上傳的是否成功執行
第五步 上傳一句話木馬 蟻劍進行連接
免責聲明
本文檔供學習,請使用者注意使用環境並遵守國家相關法律法規!
由於使用不當造成的後果上傳者概不負責!