[해커스쿨FTZ]Level5

Hint: 
/usr/bin/level5 프로그램은 /tmp 디렉토리에 level5.tmp라는 이름의 임시파일을 생성한다. 이를 이용하여 level6의 권한을 얻어라.


먼저 usr/bin/level5가 무슨 파일인지 파악해보겠습니다.

해당 디렉토리로 이동 후,

ls -al level5명령을 통해 보면

퍼미션에 대한 설정이 -rws--x---임을 알 수 있습니다.

따라서, 이는 실행파일이며, level6권한의 SETUID가 걸려있음을 알 수 있습니다.
(rws의 s는 setuid를 의미합니다.)

따라서 level5가 실행될 때, level6권한으로 임시파일을 생성한다고 볼 수 있습니다.

이를 실행시켜보면 /tmp 디렉토리에 임시파일이 생성되어야하는데,

몇 번을 실행시켜도 임시파일이 생성되지 않습니다.

처음엔 오류인줄 알았는데 그게 아니고, 임시파일을 생성하고 프로그램이 종료되기 전에

임시파일을 삭제하는 것이었습니다.

그럼 이 임시파일이 삭제되기 전에 가로챈 뒤 확인을 할 방법이 필요합니다.

찾아보니 심볼릭 링크라는 것을 이용하면 될 것 같습니다.

심볼릭 링크란, 

쉽게 말하면 리눅스 버전의 "바로가기"개념이라고 볼 수 있습니다.

특정 파일이나 디렉토리에 대하여 참조를 하는 링크 파일입니다.

이를 이용해서 임시파일이 삭제되기 전에 다른 파일로 사본을 만들어 놓을 수 있을 것 같습니다.

심볼릭 링크는 ln -s [원본파일] [링크파일] 로 사용할 수 있습니다.

이 문제에서는 원본파일(test.txt)를 만들고, 이 파일에 대한 링크를 level5.tmp로 설정하겠습니다.

그래야 level5.tmp(사본)을 level5실행파일이 수정하고 삭제하더라도

수정된 내역은 test.txt(원본)에 전달되고, 원본이 삭제되지는 않기 때문입니다.

먼저, tmp디렉토리에 vi에디터로 test.txt파일을 생성해준 뒤에,

ln -s test.txt level5.tmp 로 심볼릭 링크를 생성해줍니다.

ls -al을 통해 링크가 제대로 걸렸는지를 확인할 수 있습니다.

이후 level5 실행파일을 실행시키면 임시파일에 들어갈 내용이 원본인 test.txt 파일에 쓰여지게 됩니다.

그리고나서 cat 명령을 통해 test.txt파일을 읽으면 flag를 획득할 수 있습니다.


댓글