[overthewire] Leviathan level3 풀이문서

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

접속

ssh -p 2223 leviathan3@leviathan.labs.overthewire.org
pw: Ahdiemoo1j

주어진 정보 확인

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

leviathan3@leviathan:~$ ls -al
total 32
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 leviathan4 leviathan3 10288 Aug 26  2019 level3
-rw-r--r--  1 root       root         675 May 15  2017 .profile
leviathan3@leviathan:~$ file level3
level3: 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]=ed9f6a6d1c89cf1f3f2eff370de4fb1669774fd5, not stripped 
leviathan3@leviathan:~$

현재 디렉터리를 확인해보니 setuid가 걸려있는 level3 바이너리 파일이 있다.

해당 파일을 실행시켜보자

leviathan3@leviathan:~$ ./level3 
Enter the password> test
bzzzzzzzzap. WRONG
leviathan3@leviathan:~$ 

프로그램을 실행시키니까 password를 입력하라고 나오고, 아무 문자열이나 입력하니까 틀렸다는 문구가 나왔다.

아마 조건문을 통해 특정 key와 입력값이 동일한지 확인하는 것 같은데 혹시 key 값이 소스코드상에 드러나는지 확인하기 위해 ltrace 명령어로 프로그램을 실행시켜보자

leviathan3@leviathan:~$ ltrace -i ./level3
[0x8048481] __libc_start_main(0x8048618, 1, 0xffffd784, 0x80486d0 <unfinished ...>
[0x8048694] strcmp("h0no33", "kakaka")       = -1
[0x80486af] printf("Enter the password> ")   = 20
[0x80485a3] fgets(Enter the password> test
"test\n", 256, 0xf7fc55a0) = 0xffffd590
[0x80485bc] strcmp("test\n", "snlprintf\n")  = 1
[0x804860b] puts("bzzzzzzzzap. WRONG"bzzzzzzzzap. WRONG
)       = 19
[0xffffffffffffffff] +++ exited (status 0) +++

ltrace를 통해 프로그램을 실행시켰을 때 맨처음 h0no33kakak문자열을 비교하고 있고, 그 후에 사용자 입력값과 snlprintf 문자열을 비교하고 있다.

다시 프로그램을 실행한 후에 입력값으로 snlprintf를 입력해보자

leviathan3@leviathan:~$ .level3
Enter the password> snlprintf
[You've got shell]!
$ id
uid=12004(leviathan4) gid=12003(leviathan3) groups=12003(leviathan3)
$ 

쉘을 홱득했다. password를 확인해보자

$ cat /etc/leviathan_pass/leviathan4
vuH0coox6m
$ 

password를 획득했다.

id: leviathan4
pw: vuH0coox6m

profile
사는게 쉽지가 않네요

0개의 댓글