얍얍 이것이 힌트로다.


/usr/bin/level5 프로그램은 /tmp 디렉토리에 임시 파일을 생성한다. 라는 것이 이 문제의 힌트이자 열쇠이다.



파일을 살펴본 결과 level 6에 대한 setuid 도 걸려있다.


실행시켜보면 알겠지만 임시파일은 우리가 육안으로 확인해보기도전에 사라진다.

(그래서 엿같다)


우리가 이 문제를 풀기 위해서는 여러가지 방법이 존재하는데

그중 대표적인 방법이 바로 symbolic link를 이용하여 문제를 해결한다.


방법을 설명하자면 다음과 같다.

1. tmp 디렉터리에 tmmp 라는 파일을 하나 만들어 준다.

2. /tmp/tmmp 에 level5.tmp라고 심볼릭 링크를 걸어준다.

3. /usr/bin 이 실행되면서 level5.tmp에 password를 쓴다.

4. level5.tmp는 사라지지만 tmmp는 남아있게 된다.


즉 /tmp/tmmp 라는 파일을 만들고 심볼릭 링크를 통해 level5.tmp 를 쉽게 말해 가짜로 만드는 것이다. 그렇게되면 /usr/bin/level5라는 프로그램이 level5.tmp에 쓰기 연산을 수행하지만, level5.tmp는 tmp/tmmp 에 연결되어 있으므로, tmp/tmmp 에 데이터를 쓰게 되는 것이다.

(모르면 구글링 검색합시다. ㅡㅅㅡ 필자도 구글검색을 통해 알았습니다.)


먼저 tmmp라는 파일을 만들어 준 다음 level5.tmp 와 심볼릭 링크를 걸어준다.



ls -al 명령어를 통해 제대로 걸려있는지 확인할 수 있다.


자 이제 level5를 실행시켜보자.



모띠모띠 기모띠~ 하게 패스워드가 출력된 것을 확인하고 다음으로 넘어간다.



 

'pwnable > FTZ' 카테고리의 다른 글

level7  (0) 2016.08.03
level6  (0) 2016.08.03
level4  (0) 2016.08.03
level3  (0) 2016.08.03
level2  (0) 2016.08.03

+ Recent posts