본문 바로가기
Security/Pwnable

FTZ Level 14

by J0DEV 2021. 8. 9.
반응형

Level14에 들어가서 파일들과 hint를 봅니다.

 

코드를 해석하면 이번 문제는 쉬운 문제인 것 같습니다.

check의 위치를 찾아서 check값이 deadbeat가 되면 자동으로 15레벨의 쉘을 띄어줍니다.

프로그램 가지고 메모리 구조를 생각해 보면

RET		4
SFP		4
dummy		?
int crap	4
dummy		?
int check	4
dummy		?
buf		20

이렇게 됩니다.

main+3을 보면 총 56byte가 할당되는 것을 확인 할 수 있습니다.

 

그렇다면

20Byte(Buf) + Dummy + 4byte(Check) + Dummy + 4byte(crap) + Dummy = 56Byte

가 되는 것입니다.

 

여기서 Buf와 Check사이의 거리를 알아내어 Check에 deadbeef값을 넣어주면 됩니다.

 

이때 main+29 부분에서 ebp -16을 하면서 deadbeef값을 비교하는 것을 볼 수 있습니다.

 

즉 4byte(Check) + Dummy + 4byte(crap) + Dummy = 16Byte라는 것을 알 수 있습니다.

 

 

그럼 이제 Buf와 Check사이의 Dummy값을 알 수 있습니다.

 

20Byte가 됩니다.

 

 

쉘코드를 작성할 필요없이

 

Check에다가 바로 deadbeef를 넣어 줍니다.

 

(gets 함수이므로 cat을 이용)

 

 

 

(python -c 'print "A"*40 + "\xef\xbe\xad\xde"';cat)|./attackme

 

반응형

'Security > Pwnable' 카테고리의 다른 글

FTZ Level 15  (0) 2021.08.09
FTZ Level 15  (0) 2021.08.09
FTZ Level 13  (0) 2021.08.09
FTZ Level 12  (0) 2021.08.09
FTZ Level 11  (0) 2021.08.09