天天看點

upload-labs(Pass1-21以解讀源碼方式學習)

PHP上傳包含

    • Pass-1(js前端驗證)
    • less-2()

檔案上傳¶

在網站的營運過程中,不可避免地要對網站的某些頁面或者内容進行更新,這時便需要使用到網站的檔案上傳的功能。如果不對被上傳的檔案進行限制或者限制被繞過,該功能便有可能會被利用于上傳可執行檔案、腳本到伺服器上,進而進一步導緻伺服器淪陷

upload-labs(Pass1-21以解讀源碼方式學習)

Pass-1(js前端驗證)

upload-labs(Pass1-21以解讀源碼方式學習)
upload-labs(Pass1-21以解讀源碼方式學習)
function checkFile() {
    var file = document.getElementsByName('upload_file')[0].value;
    if (file == null || file == "") {
        alert("請選擇要上傳的檔案!");
        return false;
    }
    //定義允許上傳的檔案類型
    var allow_ext = ".jpg|.png|.gif";
    //提取上傳檔案的類型
    var ext_name = file.substring(file.lastIndexOf("."));
    //判斷上傳檔案類型是否允許上傳
    if (allow_ext.indexOf(ext_name + "|") == -1) {
        var errMsg = "該檔案不允許上傳,請上傳" + allow_ext + "類型的檔案,目前檔案類型為:" + ext_name;
        alert(errMsg);
        return false;
    }
}

           

直接改js

upload-labs(Pass1-21以解讀源碼方式學習)

或者改變字尾

upload-labs(Pass1-21以解讀源碼方式學習)

或者config禁用js

less-2()

upload-labs(Pass1-21以解讀源碼方式學習)

MIME

多用途網際郵件擴充協定(MIME)是 Multipurpose Internet Mail Extensions 的縮寫,說明了如何安排消息格式使消息在不同的郵件系統内進行交換。MIME 的格式靈活,允許郵件中包含任意類型的檔案。MIME 消息可以包含文本、圖象、聲音、視訊及其它應用程式的特定資料。

電子郵件不僅可以用文字來叙述,還可以加載音樂圖像等多媒體形式。随着網絡的不斷革新,郵件也可以承載不同類型的檔案進行傳輸。這個就需要MIME協定的支援了。

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上傳出錯!';
            }
        } else {
            $msg = '檔案類型不正确,請重新上傳!';
        }
    } else {
        $msg = UPLOAD_PATH.'檔案夾不存在,請手工建立!';
    }
}
           

繼續閱讀