본문 바로가기
Security/Pwnable

FTZ Level 13

by J0DEV 2021. 8. 9.
반응형

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