LEVEL 10: argv hunter
이번엔 argv, 환경변수를 모두 초기화해버린다.
그래서 쉘코드를 삽입할 곳이 애매하다.
leave문(main+368) 지점에 breakpoint를 걸고, 적절하게 argv를 넣어준 후 실행한다.
그 후, 스택의 가장 아래쪽을 보면, argv[0] 값이 아직 살아있음을 알 수 있다.
심볼릭 링크를 이용하고, JMP할 주소를 이 부근으로 하면 될 것이다.
복사본에 "/"이 없는 쉘코드, NOP 혼합 문자열로 구성한 payload로 심볼릭 링크를 건다.
그 후, core를 떨어뜨리기 위해 일부러 seg fault를 일으켰다. (주소가 바뀌는지 그냥 시도해도 계속 쉘을 딸 수 없었기 때문이다.)
core 파일을 분석해보자.
역시 주소가 바뀌어 있다. ./을 제외하고 0xbfffff42 정도로 JMP하면 될 것 같다.
원본에 심볼릭 링크를 다시 걸고 실행하면 쉘을 딸 수 있다.
'[Wargame Write-up] > Lord of Buffer Overflow' 카테고리의 다른 글
[LoB RedHat 6.2] LEVEL 12: golem -> darkknight (0) | 2016.10.19 |
---|---|
[LoB RedHat 6.2] LEVEL 11: skeleton -> golem (0) | 2016.10.18 |
[LoB RedHat 6.2] LEVEL 9: troll -> vampire (0) | 2016.10.08 |
[LoB RedHat 6.2] LEVEL 8: orge -> troll (0) | 2016.10.08 |
[LoB RedHat 6.2] LEVEL 7: darkelf -> orge (0) | 2016.10.08 |