profile image

L o a d i n g . . .

hint를 확인한 모습이다.

힌트에 따르면 공유 메모리를 사용하여 만든 프로그램을 도청하는 것이 문제 핵심입니다.

 

공유메모리란?

공유 메모리는 IPC(Inter-Process Communication)의 한 가지 방법으로 프로세스간 통신이 필요할 경우 사용합니다.

공유 메모리를 통한 통신은 둘 이상의 프로세스가 공통 메모리에 액세스 할 수 있는 개념으로 

한 프로세스에서 변경한 메모리 공간의 내용을 다른 프로세스에서 접근할 수 있습니다.

 

ipcs -m 명령어를 통해 공유 메모리 세그먼트에 대해 알 수 있습니다.

key는 7530 byte이며, 크기는 1028 byte입니다.

 


 

이제 공유메모리에 접근해서 프로그램을 도청해봅시다.

공유 메모리를 사용하지 위해서는 아래의 헤더파일을 include 해주어야 합니다.

#include <sys/types.h>
#include <sys/shm.h>

 

또한 공유메모리를 사용하기 위한 대표적인 함수로는 shmget 함수와 shmat 함수가 있습니다.

shmget
함수 원형: int shmget(key_t key, int size, int shmflg)
- 커널에 공유 메모리 공간을 요청하기 위해 사용하는 시스템 호출 함수
- KEY값은 고유의 공유 메모리임을 나타낸다
- Argument (KEY, MEMORY_MAX_SIZE, 접근권한 | 생성방식)

 

shmmat
함수 원형: void *shmat( int shmid, const void *shmaddr, int shmflg )
- 공유 메모리 공간을 생성한 이후, 공유메모리에 접근할 수 있는 int형의 "식별자"를 얻는다
- 공유 메모리를 사용하기 위해 얻은 식별자를 이용하여 현재 프로세스가 공유 메모리에 접근할 수 있도록 연결하는 작업
- Argument (식별자, 메모리가 붙을 주소 (0을 사용할 경우 커널이 메모리가 붙을 주소를 명시), 읽기/쓰기 모드)

 


 

위 두 함수를 이용해 현재 프로세스로 key_t 값이 7530인 공유 메모리에 접근하는 코드를 작성해보았습니다.

 

level 11의 password는 what!@#$?

 

 

참고
https://coding-chobo.tistory.com/16
https://doitnow-man.tistory.com/68

'Wargame > Hackerschool FTZ' 카테고리의 다른 글

[FTZ] 해커스쿨 FTZ level 12  (0) 2021.04.12
[FTZ] 해커스쿨 FTZ level 11  (0) 2021.04.12
[FTZ] 해커스쿨 FTZ level 9  (0) 2021.03.26
[FTZ] 해커스쿨 FTZ level 8  (0) 2021.03.23
[FTZ] 해커스쿨 FTZ level 7  (0) 2021.03.23
복사했습니다!