File Upload_(4)_MIME_Type

HackBeom·2022년 10월 24일
0
<?php
$myfile_save_dir = 'upload/';
if($_FILES['fileToUpload']['size'] >= 1024 * 1024 * 1){ exit("<script>alert(`file is too big`);history.go(-1);</script>"); }

$allowed_types = ['image/jpeg', 'image/png']; # 지정된 MIME_Type 
$file_type = $_FILES['fileToUpload']['type']; # 업로드된 파일의 MIME_Type

if(in_array($file_type, $allowed_types)){
    move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $myfile_save_dir . $_FILES['fileToUpload']['name']);
    exit("<script>alert(`upload ok`);location.href=`file.php`;</script>");
}
else{
    exit("<script>alert(`이미지 파일만 업로드가 가능합니다.`);location.href=`file.php`;</script>");
}
?>

MIME_Type을 기반으로한 필터링을 우회 해 보자
MIME_Type이란 https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types
해당 링크를 참조하여 개념을 파악하면 쉽다.

MIME_Tpye이 application/octet-stream를 image/jpeg로 변경하여 전송


업로드 성공

웹쉘 테스트 시작


정상업로드 및 정상작동 우회완료

이 외에도 다양한 방법이 많지만 아직은 공부를 더 해야 할 듯 싶다.

0개의 댓글