ID : level10
Password : interesting to hack!
힌트 :
두명의 사용자가 대화방을 이용하여 비밀스런 대화를 나누고 있다. 그 대화방은 공유 메모리를 이용하여 만들어졌으며, key_t의 값은 7530이다. 이를 이용해 두 사람의 대화를 도청하여 level11의 권한을 얻어라 - 레벨을 완료하셨다면 소스는 지우고 나가주세요. |
문제를 풀기 전에 :
공유메모리란 ?
1) 공유메모리란 여러 프로세스가 함께 사용할 수 있는 메모리이다.
2) 이 공유메모리를 이용하면 커널에 내려가지 않고 프로세스끼리 통신을 할 수 있으며 같은 데이터 공유를 할 수 있다.
3) 프로세스가 공유 메모리를 사용하기 위해선 커널에 요청을 해야 한다.
4) 프로세스가 지워져도 해당 공유메모리는 잔재한다.
shmat()
공유메모리를 프로세스에 첨부시키는 함수이다.
void *shmat(int shmid, const void* shmaddr, int shmfig);
int shmid : 공유메모리를 구별하는 식별번호
void *shmaddr : 첨부되는 어드레스 주소, 일반적으로 NULL을 지정
int shmfig : 동작 옵션
- SHM_RDONLY : 공유 메모리를 읽기 전용으로
- SHM_RND : shmaddr이 NULL이 아닐 경우 첨부 주소를 반올림하여 메모리 페이지 경계에 맞춤
공유 메모리 정보를 보는 명령어
ipcs -lm |
등록된 공유 메모리 정보를 보는 명령어
ipcs |
풀이 :
1) ipcs 명령어를 통해 shmid를 획득한다. : 0
2) 프로그램을 작성하여 메모리의 값을 읽는다.
사용한 코드 :
'리버싱 > FTZ' 카테고리의 다른 글
해커스쿨 FTZ Level11 (버퍼오버플로우 : 기초) + GDB 설명 (1) | 2015.02.17 |
---|---|
해커스쿨 FTZ Level9 (버퍼오버플로우 : 로컬영역 침범) (0) | 2015.02.17 |
해커스쿨 FTZ Level8 (리눅스 패스워드 크랙) (0) | 2015.02.17 |
해커스쿨 FTZ Level7 (이진수 -> 헥사 -> 문자열) (0) | 2015.02.17 |
해커스쿨 FTZ Level6 (프로세스 종료 후 쉘 접근) (0) | 2015.02.17 |