WarGame/LOB(The Lord of the BOF)

11단계 skeleton -> golem

cyanhe_wh 2019. 9. 20. 15:20
728x90
반응형

[그림 1-1] 소스코드

이번 문제는 스택 구간을 전무 못쓰게 하고 있다 

버퍼, argv, 환경변수, 절대경로, 그냥 싹 다 0으로 초기화시켜버린다. ㅎㅎㅎ

LD_PRELOAD를 사용해야 한다.

 

LD_PRELOAD란?   = 공유 라이브러리의 경로를 지정해준다.

 - 유닉스/리눅스 계열에서 사용되는 환경변수이다.

 - 프로세스가 실행될 때, 이 환경변수에 지정된 공유라이브러리가 먼저 로드된다.

 - 따라서 다른 라이브러리의 함수와 LD_PRELOAD에 지정된 라이브러리의 함수가 서로 이름이 똑같을 경우 후자가

   실행되게 된다. (라이브러리 적재 순서 때문)

 

일단 소스코드를 공유라이브러리로 컴파일하되 명을 쉘 코드로 짓자.

[그림 1-2]

[그림 1-2] 처럼 공유 라이브러리로 컴파일하고 LD_PRELOAD 환경변수에 쉘 코드를 올려버린다.

[그림 1-3]

쉘 코드가 올라간 주소 값을 찾기 위해 이렇게 해서 core 덤프를 만들어 gdb로 분석을 한다.

[그림 1-4]

gdb로 core 덤프 파일을 분석하다보면 LD_PRELOAD 환경변수 영역에 올라간 쉘 코드를 발견할 수 있다.

이제 주소값을 알았으니 이를 이용해 exploit을 시행하면 된다.

[그림 1-5] exploit 성공

728x90
반응형

'WarGame > LOB(The Lord of the BOF)' 카테고리의 다른 글

13단계 darkknight -> bugbear  (0) 2019.11.25
12단계 golem -> darkknight  (0) 2019.09.20
10단계 vampire -> skeleton  (0) 2019.09.08
9단계 troll -> vampire  (0) 2019.09.07
8단계 orge -> troll  (0) 2019.09.07