본문 바로가기

My Study/Exploit

Hackerschool level16

저의 삽질 과정은 빼고 문서를 쓰겠습니다.;;

일단 gdb로 어셈코드만 분석해본 결과 .. fgets로 입력 받고 printit함수를 호출하면서 끝나버리는 아주 정직한 프로그램이었습니다. 그래서 ret값 수정도 불가능한 상태에서 어떻게 공격할까 생각하던 도중.. 함수 목록을 보기로 했습니다.
(특정 프로그램 함수 목록만 보는 명령어가 있을탠데.. 알려주세요~~ -.-;; )

오호.......printit란 함수 말고도 shell함수도 있었습니다. 저 objdump로 보니 아직 무슨 일을 하는 함수인지는 모르겠지만 의심이 가군요. 저 함수를 gdb로 봐보겠습니다.

확실 하군요. 그러면 여기서 다시한번 시나리오가 나오게 됩니다.

printit함수 대신 shell함수를 실행시켜 주면 되는 겁니다. 방법은?? 간단합니다.
그림을 보시겠습니다. ( 그림판.. OTL... 윈7에서는 그림판이 좋아졌는데.. 전 아직 XP.. )
저 버퍼에 0x080484d0이라는 shell함수 주소를 넣어주면 됩니다.
위 시나리오 대로 공격을 해보겠습니다.
성공입니다.

'My Study > Exploit' 카테고리의 다른 글

Hackerschool level18  (0) 2010.03.24
Hackerschool level17  (0) 2010.03.23
Hackerschool level15  (0) 2010.03.23
Hackerschool level14  (0) 2010.03.22
Hackerschool level13  (0) 2010.03.22