yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

FTZ level10 풀이 본문

wargame 풀이/FTZ

FTZ level10 풀이

yehey 2020. 9. 20. 21:17
id: level10
pw: interesting to hack!

 

hint 읽기

 

공유 메모리에 접근해서 그 내용을 읽어야한다!

더보기

공유 메모리?

: 여러 프로세스들이 함께 사용하는 메모리, 프로세스들이 메모리 자체를 공유하게 됨으로써 오버헤드가 발생하지 않아 속도가 빠르다. 여러 프로세스에서 동시에 접근할 수 있다.

 

즉, 두명의 사용자가 한 대화를 해당 공유메모리에 접근하면 볼 수 있다! 

 

공유메모리 segment를 확인해보자. (ipcs)

 

ipcs 명령어: 시스템에서 사용 중인 콜 프로세스의 ipc와 관련된 정보를 출력한다.  -m 옵션을 이용하면 공유메모리 세그먼트를 확인할 수 있다.
ipc:  message queue(q), shared memory (m), semaphore (s)의 자원을 사용하는 프로세스 간 데이터 통신

 

공유 메모리 세그먼트가 하나 존재하고 id는 0이며 size는 1028, 권한은 666이다.

혹시 몰라 key값을 10진수로 바꾸어보았는데 7530이 맞다. 우리가 찾는 공유메모리다.

 

이제 이 공유메모리에 접근하고 내용을 출력하는 코드를 작성해보자.

(/tmp에서 작성한다.)

 

 vi editor로 hack.c 파일을 만들어 코드를 작성하자.

//hack.c

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

int main(){
        char* shm;	//공유메모리의 데이터를 담을 변수
        
        shm=shmat(0,NULL,0);
        //shmat: 생성된 공유 메모리를 프로세스에 연결, 사용 가능하게 하는 함수
        //인자: 공유메모리 id, 공유메모리가 할당된 주소, 공유메모리 사용 옵션
        //id는 ipcs 명령어로 0임을 알아냈음
        //할당된 주소가 NULL이면 메모리 주소를 자동으로 할당
        //반환 값: 공유메모리의 주소값

        printf("%s",shm);
        return 0;
}

 

hack.c를 컴파일 해주고 (gcc -o hack hack.c)

hack을 실행시켜주자!

 

level11의 pw: "what!@#$?"

'wargame 풀이 > FTZ' 카테고리의 다른 글

FTZ level12 풀이  (0) 2020.09.25
FTZ level11 풀이  (0) 2020.09.23
FTZ level9 풀이  (0) 2020.09.18
FTZ level8 풀이  (0) 2020.09.18
FTZ level7 풀이  (0) 2020.09.16
Comments