얍얍 이것이 힌트로다.
/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를 실행시켜보자.
모띠모띠 기모띠~ 하게 패스워드가 출력된 것을 확인하고 다음으로 넘어간다.