이번엔 skeleton에서 사용했던 방식을 사용할 수 없도록 버퍼에서부터 스택 끝부분까지를 전부 0으로 초기화한다.

이럴 때는 공유 라이브러리에 원하는 코드를 올려서 사용하면 된다.



스택 영역 바로 아랫부분에 공유 라이브러리 영역이 있는 것을 확인할 수 있다.

(이미지 출처 : http://lapislazull.tistory.com/61)

문제에서 0으로 초기화하는 부분은 스택에서 윗부분이므로 아랫부분인 공유 라이브러리 부분은 그대로이다.

아무 컴파일 가능한 c 파일을 하나 만들어서 컴파일을 하는데,

옵션으로 shared와 fPIC를 준다.

shared는 말 그대로 공유 라이브러리를 먼저 참조하라는 의미이고, fPIC는 심볼이 어느 위치에 있건 동작이 가능하도록 컴파일하라는 옵션이라고 한다.

만들어질 파일 명을 NOP와 쉘코드를 포함하여 만들고,

LD_PRELOAD 환경변수에 등록한다.

LD_PRELOAD는 파일 실행 시 Dynamic Linker가 선택된 파일을 무조건 선적재한다.

따라서 이렇게 환경변수에 올려주면 공유 라이브러리로 무조건 해당 파일이 올라온다.

메모리상에서 NOP+SHELLCODE의 주소를 찾아냈고,

해당 주소를 넣어주어 공격에 성공했다.

'Wargame > Lord of Buffer overflow' 카테고리의 다른 글

LOB Redhat : darkknight > bugbear  (0) 2015.11.02
LOB Redhat : golem > darkknight  (0) 2015.10.17
LOB Redhat : vampire > skeleton  (0) 2015.10.15
LOB Redhat : troll > vampire  (0) 2015.10.15
LOB Redhat : orge > troll  (0) 2015.10.13
블로그 이미지

__미니__

E-mail : skyclad0x7b7@gmail.com 나와 계약해서 슈퍼 하-카가 되어 주지 않을래?

,