본문 바로가기

WarGame/HackerSchool_LOB

HackerSchool LOB Level11

소스이다.


buffer의 주소부터 44바이트만큼을 0으로 초기화한다.

다행히, 주소부분은 초기화하지 않는다.

그리고 buffer+48바이트부터 스택의 끝까지 0으로 초기화한다.

여기서보면, buffer+45~48 의 4바이트만 제외하고 모두 0으로 초기화한다.



환경변수는 초기화하지 않는걸 보니 환경변수를 써보자


main 맨 처음에 브레이크를 건 모습



맨 마지막까지 실행하고, 스택을 본 모습

역시 리턴주소 부분만 제외하고는 전부 0으로 초기화되었다.


그럼, 이 리턴주소를 환경변수로 돌리면 되지 않을까?


환경변수가 저장된 스택의 주소


하지만 저 스택주소도 결국 모두 0으로 초기화된다.

어떻게 해야할까..







저 프로그램이 사용하는 스택주소 아래쪽에 쉘코드가 저장이 되어 있어야 한다.

스택 바로 아래에는 공유 라이브러리 영역이 존재한다.

여기에 쉘코드를 넣으면 될 거 같다.

-그림 출처:해커스쿨






그럼 공유 라이브러리에 쉘코드를 올려놓고

그 주소로 리턴해주면 된다고 한다.



공유 라이브러리에 쉘코드를 올리는 방법














gdb로 살펴보면 저 스택주소 부분에 공유 라이브러리가 저장되어 있다.

리턴주소를 저쪽으로 돌리니

쉘을 얻었다.









'WarGame > HackerSchool_LOB' 카테고리의 다른 글

HackerSchool LOB Level13  (0) 2014.08.15
HackerSchool LOB Level12  (0) 2014.07.31
HackerSchool LOB Level9  (0) 2014.07.30
HackerSchool LOB Level8  (0) 2014.07.29
HackerSchool LOB Level7  (0) 2014.07.29