[overthewire] Leviathan level1 풀이문서

mj·2023년 1월 13일
0
post-thumbnail

접속

ssh -p 2223 leviathan1@leviathan.labs.overthewire.org
pw: rioGegei8m

주어진 정보 확인

현재 디렉터리에서 정보를 확인한다.

leviathan1@leviathan:~$ ls -al
total 28
drwxr-xr-x  2 root       root       4096 Aug 26  2019 .
drwxr-xr-x 10 root       root       4096 Aug 26  2019 ..
-rw-r--r--  1 root       root        220 May 15  2017 .bash_logout
-rw-r--r--  1 root       root       3526 May 15  2017 .bashrc
-r-sr-x---  1 leviathan2 leviathan1 7452 Aug 26  2019 check
-rw-r--r--  1 root       root        675 May 15  2017 .profile
leviathan1@leviathan:~$ file check 
check: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=c735f6f3a3a94adcad8407cc0fda40496fd765dd, not stripped

현재 디렉터리를 확인해보니까 check이라는 바이너리 파일이 있다. 해당 파일에 setuid가 걸려있는 것으로 보아 해당 파일을 이용하여 level2의 password를 얻어야되는 것 같다.

해당 파일을 실행시켜보자

leviathan1@leviathan:~$ ./check 
password: test
Wrong password, Good Bye ...

해당 파일을 실행시켜보니 password 입력 창이 나오고 테스트 문자열을 입력하니까 password가 틀려다는 문자열과 함께 프로그램이 종료된다.

조건문을 이용하여 password를 검증하는 것 같은데 password의 원문이 소스코드에 남아있는지 확인하기 위해 ltrace 툴을 사용하여 프로그램을 실행시켜보자

leviathan1@leviathan:~$ ltrace -i ./check
[0x8048461] __libc_start_main(0x804853b, 1, 0xffffd784, 0x8048610 <unfinished ...>
[0x8048584] printf("password: ")            = 10
[0x804858c] getchar(1, 0, 0x65766f6c, 0x646f6700password: test
) = 116
[0x8048594] getchar(1, 0, 0x65766f6c, 0x646f6700) = 101
[0x804859c] getchar(1, 0, 0x65766f6c, 0x646f6700) = 115
[0x80485b3] strcmp("tes", "sex")            = 1
[0x80485f2] puts("Wrong password, Good Bye ..."Wrong password, Good Bye ...
) = 29
[0xffffffffffffffff] +++ exited (status 0) +++
leviathan1@leviathan:~$ 

프로그램에서 strcmp 함수를 사용하여 사용자 입력값과 sex 문자열을 비교하고 있다.

이제 다시 프로그램을 실행시켜서 sex를 입력해보자

leviathan1@leviathan:~$ ./check 
password: sex
$ id
uid=12002(leviathan2) gid=12001(leviathan1) groups=12001(leviathan1)
$ cat /etc/leviathan_pass/leviathan2
ougahZi8Ta
$ 

password를 획득했다.

id: leviathan2
pw: ougahZi8Ta

profile
사는게 쉽지가 않네요

0개의 댓글