본문 바로가기

[Wargame Write-up]/Lord of Buffer Overflow

[LoB RedHat 6.2] LEVEL 10: vampire -> skeleton

LEVEL 10: argv hunter



이번엔 argv, 환경변수를 모두 초기화해버린다.


그래서 쉘코드를 삽입할 곳이 애매하다.




leave문(main+368) 지점에 breakpoint를 걸고, 적절하게 argv를 넣어준 후 실행한다.


그 후, 스택의 가장 아래쪽을 보면, argv[0] 값이 아직 살아있음을 알 수 있다.


심볼릭 링크를 이용하고, JMP할 주소를 이 부근으로 하면 될 것이다.




복사본에 "/"이 없는 쉘코드, NOP 혼합 문자열로 구성한 payload로 심볼릭 링크를 건다.


그 후, core를 떨어뜨리기 위해 일부러 seg fault를 일으켰다. (주소가 바뀌는지 그냥 시도해도 계속 쉘을 딸 수 없었기 때문이다.)




core 파일을 분석해보자.




역시 주소가 바뀌어 있다. ./을 제외하고 0xbfffff42 정도로 JMP하면 될 것 같다.




원본에 심볼릭 링크를 다시 걸고 실행하면 쉘을 딸 수 있다.