이번에도.. 딱봐도 오버플로우다.
살펴보면 왠지 스택은
low
buf |
i |
SFP |
RET |
high
이런 형태일 것 같고, 아마 if 문에서 i 값이 1234567 인지 확인한 후 맞아야 종료되지 않는 걸로 보아
buf 에 값을 오버플로우 시켜 i 자리에 1234567 이 들어가도록 하는 것 같다.
정확한 바이트 수를 알아내기 위해 /tmp 로 이동 후 똑같이 소스파일 생성, 컴파일, 디버깅을 해보자.
처음 esp 에서 0x418 (1048) 만큼 공간을 할당해주는 부분이 보이고,
ebp -12 위치에 0x1234567 인 i 가 할당되어 있는 것을 볼 수 있다.
이를 참고해서 간단하게 스택을 그려보자면,
이런식으로 되는 셈이다.
buf[1024] + dummy[12] + i[4] + dummy[8] = 1048 .
따라서 1036 바이트를 채운 후 "\x67\x45\x23\x01" 를 입력하고, 다시 더미와 sfp 총 12 바이트를 채우고,
ret 자리에 쉘 코드를 담은 환경변수 주소를 넣어주면! 성공할 것이다.
그럼 먼저 환경 변수 설정 후 주소 확인을 해보면, (자세한 과정은 level11 풀이 참고)
이제 attackme 에 인자로 입력해주자.
level14 password "what that nigga want?" 획득!
'WARGAME > FTZ [system]' 카테고리의 다른 글
ftz level 15 [level15] (0) | 2020.05.01 |
---|---|
ftz level 14 [level14] (0) | 2020.04.30 |
ftz level 12 [level12] (0) | 2020.04.30 |
ftz level 11 [level11] (0) | 2020.04.30 |
ftz level 10 [level10] (0) | 2020.04.30 |