1.
ls 명령을 입력하니 아까 만든 backdoor 파일이 있네? 그래서 /home/level5 로 이동해주었다. 역시 hint 파일이 있으니 열어볼까
tmp 디렉토리는 아무나 들어갈 수 있는 곳이며 임시파일을 저장하는, 일종의 공동화장실 같은 곳이다.
2.
/usr/bin/level5 파일의 정보를 출력해보자.
이 파일의 소유주는 level6이고 setuid도 걸려있다.
즉 이 파일을 가지고 쉘을 실행시키거나, my-pass를 실행시키면 level6의 패스워드를 알 수 있다.
해당 파일을 실행시키면, level5.tmp를 만든다고 했는데, 한 번 실행시켜보자.
/usr/bin/level5 파일을 실행시키고 tmp에 와서 확인해보았지만 level5.tmp는 보이지 않는다.
어찌 된 것일까??
/usr/bin/level5를 실행 중일 때 level5.tmp가 삭제된 것임을 추측할 수 있다.
그렇다면 level5.tmp 가 삭제되지 않으려면 어떻게 해야 할까?
여러가지 방법이 있지만, 심볼릭 링크를 사용하여 풀이해보겠다.
tmp 디렉토리에 b라는 임의의 파일을 생성하고 b 파일에 level5.tmp 파일링크를 걸어준다.
이렇게 되면 /usr/bin/level5를 실행했을 때 level5.tmp 파일은 삭제되어도 b 파일은 여전히 남아있기 때문에 링크에 걸려있는 level5.tmp 성질을 이용할 수 있게 되는 것이다.
3.
$ touch b → b 파일을 생성했다.
$ ls -alp b → 생성한 b 파일의 정보를 확인했다.
$ ln -s b level5.tmp → b 파일에 level5.tmp 파일 링크를 걸어준다.
$ ls -al → tmp 파일안의 리스트를 출력했더니, 정상적으로 심볼릭링크가 된 것을 확인할 수 있다.
이로써 b파일에 접속하기 위해서는 정상적으로 b 파일을 실행하거나, level5.tmp를 이용하여 b 파일을 실행시키는 두 가지의 방법이 생겼다.
4.
/usr/bin/level5 파일을 실행했다. ./usr/bin/level5를 입력했는데 파일을 찾을 수 없대서 bin 디렉토리로 이동후에 level5 파일을 실행했다. (?)
그리고 나서 다시 tmp로 이동하여 b 파일을 확인했다. (??)
b 파일을 읽어주니 다음비밀번호가..!!
끝.
(2019.12에 작성한 글을 가져왔습니다.)
'Pwnable > FTZ' 카테고리의 다른 글
[FTZ] level 7 풀이 <진법변환, ASCII> (0) | 2024.01.18 |
---|---|
[FTZ] level 6 풀이 <bbs 해킹기법> (0) | 2024.01.18 |
[FTZ] Level 4 풀이 <Backdoor> (1) | 2024.01.18 |
[FTZ] Level 3 풀이 <다중 명령어> (0) | 2024.01.18 |
메모리 구조 정리 (ESP, EBP) (0) | 2024.01.17 |