둘둘리둘둘리둘둘리둘둘리둘둘리둘

[Hacker school FTZ] Level13 -> Level14 본문

War game/해커 스쿨 FTZ

[Hacker school FTZ] Level13 -> Level14

dool2ly 2015. 8. 20. 18:25


소스로 봐선 스택구조가 [그림 1]로 추측되는데 Canary(또는 Security Cookie)처럼 Return address변조를 위해서 어쩔 수 없이 덮어 씌워지는 변수 i의 영역의 변화 유무를 검사하여 메인 함수가 종료되기전에 자기 자신에 SIGSEGV(Segmentation Violation) 신호를 보내 종료시킨다.



buf[1024] 







 i[4]

 SFP[4]

 RET

[그림 1]


[그림 2]


GDB로 까보면 내부는 [그림 2]와 같다 <main+3>에서 esp를 ebp-1048까지 키우고

ebp-12와 0x1234567을 비교하는걸로 봐선 buf+더미의 크기가 1048-12= 1036byte로 알 수 있다.


변수 i+더미의 크기는.. 아래와 같이 12byte로 확인된다



그러므로 페이로드는 아래와 같이 짜면 되겠다.

[ dummy(1036) | 0x01234567 | dummy(8) | dummy(4) | 쉘코드 주소 ]


쉘코드 주소는 level11과 같이 환경변수에 쉘코드 등록후 환경변수의 주소를 얻어내면 된다.


--풀이--


Comments