반응형
Level 13에 접속하여
파일과 힌트를 봅니다.
이번에도 attackme를 이용하는 것입니다.
소스를 보면 long형 변수 1개와 char형 배열 하나가 선언되어있습니다.
그리고 long I 의 값이 변하면 프로그램이 꺼집니다.
그러므로 I의 초기값을 유지해야합니다.
소스만 보고 스택구조를 보면
RET 4
SFP 4
DUMMY ?
I 4
DUMMY ?
BUF 1024
형태가 됩니다.
이를 gdb로 뜯어보면
main+3을 보면 (0x418) 1048바이트가 할당된 것을 볼 수 있습니다.
그렇다면
BUF(1024byte) + DUMMY(?) + I (4byte) + DUBBY = 1048Byte
입니다. 더미의 합은 20 byte가 되어야합니다.
4 + 16, 8 + 12, 12 + 8, 16+ 4 중 하나가 됩니다.
여기서 일일히 다 대입 해보니깐
12 + 8 이 답이더라구요
RET 4
SFP 4
DUMMY 8
I 4
DUMMY 12
BUF 1024
이제 1036바이트(Buf + Dummy)의 쓰레기 값과 4바이트의 I값(초기화된 값)과
8바이트(Dummy)의 쓰레기값 그리고 SFP값을 쓰레기값으로 체워주고
eggshell과 getenv를 이용한 RET를 설정해 줍니다.
반응형
'Security > Pwnable' 카테고리의 다른 글
FTZ Level 15 (0) | 2021.08.09 |
---|---|
FTZ Level 14 (0) | 2021.08.09 |
FTZ Level 12 (0) | 2021.08.09 |
FTZ Level 11 (0) | 2021.08.09 |
Buffer Overflow 원리 - 공격-1 고전적인 방법 (0) | 2021.08.08 |