이전 레벨들에서 모두 설명했던 방법이라 사진 세 장으로 설명이 된다.



문제 소스 코드이다.

환경변수에 쉘코드를 삽입하지 못하도록 모두 초기화해버린다.

스택 상에 쉘코드를 삽입해야 하므로, 남은 영역은 버퍼 또는 RET 영역 뒤이다.

필자는 RET 영역 뒤를 추천한다. 더 넓으므로 nop을 많이 넣을 수 있다.

여기서 쓰는 기법은 아니지만, RET 영역 바로 뒤는 esp 레지스터가 가리키는 위치라는 장점도 있다.



core 파일 생성을 위해 orc 파일을 tmp 디렉토리에 카피

GDB로 확인하지 않고 코드만 보아도 RET 영역이 44 문자 이후 4바이트라는 것을 알 수 있다.

payload : dummy*44 + RET + nop + shellcode

core 파일이 생성되었고, GDB로 열어서 EIP가 제대로 Overwrite 된 것을 확인할 수 있다.

x/x $esp를 통해 nop 영역의 주소 중 한 곳을 찾았다.(0xbfffd3a0)

페이로드 중 RET 영역을 찾아낸 주소로 바꿔내면 쉘이 얻어진다.

이제 원본 파일에 exploit을 시도한다.



성공적으로 쉘을 획득하였다.

간단.

'Wargame Writeup > LOB(Redhat)' 카테고리의 다른 글

LOB wolfman -> darkelf  (0) 2015.11.13
LOB orc -> wolfman  (0) 2015.11.13
LOB cobolt -> goblin  (0) 2015.11.13
LOB gremlin -> cobolt  (0) 2015.11.08
LOB gate -> gremlin  (0) 2015.11.05

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/