cgy12306

FTZ 10번 level10 본문

Wargame/FTZ

FTZ 10번 level10

cgy12306 2019. 7. 6. 18:38

ID : level10

PW : interesting to hack!

 

hint

 

공유 메모리를 도청해야한다.

공유 메모리는

 

key 값을 이용해 A가 공유 메모리를 생성하면, B가 key값으로 인증해서 메모리를 공유하는 방식이다.

출처 : http://forum.falinux.com/zbxe/index.php?mid=C_LIB&document_srl=423456

 

C 라이브러리 함수 - shmget() 공유 메모리 생성

 

forum.falinux.com

 

공유메모리를 이용한 코드를 짜보자.

 

메모리를 공유하기 위해 sys/shm.h 와 sys/ipc.h를 선언해주고, key_t 변수에 key값인 7530을 넣어준다.

 

shm_id=shmget(key, 300, IPC_CREAT)는 공유메모리 공간을 가져온다. 없으면 생성한다.

 

사용법은 int shmget(key_t key, size_t size, int shmflg); key는 공유하는 키값, size는 메모리 크기, shmflg는 생성 및 접근이다. 성공하면 양의정수를 반환하고 실패하면 -1를 반환해준다.

 

shm_addr = shmat(shm_id, (void *)0, 0)은 공유메모리와 프로세스를 연결시켜준다. 사용법은 void* shmat(int smId, const void* shm_addr, int flag); smId 는 공유메모리 식별자, shm_addr는 공유메모리와 연결하고자하는 프로세스 내부의 메모리(0은 null 시스템이 기본으로 할당 해줌), flag는 속성설정이다.

 

 

출처 : https://taesun1114.tistory.com/entry/%EA%B3%B5%EC%9C%A0%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%A8%EC%88%98-shmget-shmat-shmdt

 

공유메모리 함수 - shmget , shmat , shmdt

저번 포스팅 Critical section - 공유메모리 에서 pipe로 통신하는 방법 외에도 여러가지 방법이 있어서 그중, 공유메모리를 이용한 통신을 알아보도록 하자. 일단 기본적으로 프로세스간 통신을 위해 알아야 할..

taesun1114.tistory.com

 

그럼 이제 실행 시켜보자.

 

비밀번호는 what!@#$? 이다.

 

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

FTZ 12번 level12  (0) 2019.07.06
FTZ 11번 level11  (0) 2019.07.06
FTZ 9번 level9  (0) 2019.07.06
FTZ 8번 level8  (0) 2019.07.06
FTZ 7번 level7  (0) 2019.07.06
Comments