level00
(SETUID 권한을 가진 파일 찾기(정보 수집))
문제 설명 : 이번 레벨은 "flag00" 계정으로 "Set User ID"가 설정된 프로그램을 찾는 능력을 요구한다. 루트 디렉토리(/)를 이용하여 찾는다면 도움이 될 수 있다.
find 명령어를 활용해 SETUID 권한을 가진 파일을 찾는다.
$ find / -user "flag00" -perm -4000 2>/dev/null |
해석 : 소유자 계정이 flag00이고 SETUID 권한을 가진 파일을 검색하겠다. 오류 메시지는 휴지통에 넣겠다. |
권한 옵션의 값으로 입력된 "-4000"의 좌측에 포함된 대시(-) 기호는, '전부'라는 의미를 지닌다. '다른 부분은 모르겠는데, 이 기준의 설정된(1) 부분만은 전부 준수해야 만족한다.'는 의미이다. 반대로, 슬래시(/) 기호는, '일부'라는 의미를 지닌다. '이 기준의 설정된(1) 부분을 일부만 준수해도 만족한다.'는 의미이다.
find 명령어 옵션 | |
/ | 최상위 디렉터리에서 검색하겠다. |
-user | 유저 아이디 |
-perm | 권한 정보 |
2>/dev/null | 오류 메시지를 휴지통에 넣어 출력되지 않게 한다. |
출력 |
level00@nebula:~$ find / -user "flag00" -perm -4000 2>/dev/null /bin/.../flag00 /rofs/bin/.../flag00 |
SETUID 권한을 가지고 있는 파일들의 정보를 확인해본다.
level00@nebula:~$ ls -al /bin/.../flag00 /rofs/bin/.../flag00 -rwsr-x--- 1 flag00 level00 7358 2011-11-20 21:22 /bin/.../flag00 -rwsr-x--- 1 flag00 level00 7358 2011-11-20 21:22 /rofs/bin/.../flag00 |
각 파일에 SETUID 권한이 설정된 것을 확인할 수 있다.
이제 이 파일들을 실행한다.
level00@nebula:~$ /bin/.../flag00 Congrats, now run getflag to get your flag! flag00@nebula:~$ /rofs/bin/.../flag00 Congrats, now run getflag to get your flag! |
축하메시지가 출력되며, getflag 명령어를 입력하여 flag를 획득하라고 한다.
getflag 명령어를 입력한다.
flag00@nebula:~$ getflag You have successfully executed getflag on a target account |
flag를 획득하였다.