-
[Webhacking.kr] Challenge 25 풀이Wargame/Webhacking.kr 2019. 5. 12. 01:17
25번 문제로 들어가면 리눅스에서 ls -l 명령어를 사용했을 때의 결과 화면과 비슷한 화면이 나온다.
텍스트창에 hello world 문구가 있고 URL에 file=hello라고 되어있는 것으로 보아, GET 방식으로 hello.txt 파일이 전송되어 해당 파일이 실행된 것으로 추측된다. 즉, GET 방식으로 파일명을 전송하면 해당 파일이 실행된다는 것을 알 수 있다.
그래서 URL에 file=password.php와 file=index.php를 추가하여 실행해보았지만 아무 일도 일어나지 않았다. 오직 hello.txt 파일만 실행이 되었는데, 이때 .txt 확장자는 따로 URL에 표시되지 않는 것으로 보아, 내가 입력한 파일명에 .txt 문자열이 추가된 상태로 서버에 전송되는 것 같다.
$file = $_GET['hello'].".txt"
따라서, password.php를 URL에 그대로 입력하면 password.php.txt 형태로 전송되어 파일이 정상적으로 실행되지 않으므로, 문자열의 끝을 알리는 NULL(\0)를 사용하여 뒤의 .txt 문자열을 무시해주면 된다.
\0의 URL 인코딩 기호는 %00이므로, URL에 file=password.php%00을 입력하여 실행하면 뒤에 붙은 .txt 문자열이 무시되어 password.php 파일이 정상적으로 실행되면서 password가 출력된다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge 32 풀이 (0) 2019.05.12 [Webhacking.kr] Challenge 27 풀이 (1) 2019.05.12 [Webhacking.kr] Challenge 24 풀이 (0) 2019.05.12 [Webhacking.kr] Challenge 21 풀이 (0) 2019.05.11 [Webhacking.kr] Challenge 18 풀이 (0) 2019.03.30