Phantom

FTZ Level16 본문

Pwnable/[Wargame] FTZ

FTZ Level16

Ph4nt0m_ 2016. 3. 18. 10:00
반응형

 

이번 문제는 함수 포인터에 대한 문제다

저번 단계의 포인터문제에서도 조금 머리를 썩였는데 이번은 어떨지…

 

일단 스택 구조부터 알아보자

 

 

먼저 스택 프레임으로 0x38. 56바이트 만큼 할당된다

그리고 buf의 시작은 ebp-56부터 시작한다 그리고 call함수가 호출되는 부분이 ebp-16이다

 

그렇다면 ebp-56에서 20만큼 그리고 다음 변수인 call이 ebp-16에서부터 4만큼

Buf와 call사이에 20만큼이 빈다, 더미다

그리고 call다음에 crap이 온다

그 후에 dummy가 8만큼온다

 

다음 처럼 보일 수 있다


buf[20] | dummy(20) | call(4) | crap(4) | dummy

 

이렇게 되는 것이다

 

자 이제..main+33에 BP를 걸고 아무값이나 넣고 뭐가들어가있는지 확인해보자

 

 

call부분에 printit이 들어가 있다 그럼 여기에 shell의 주소를 넣게 된다면 shell()이 실행 되는걸까?

한번 해보자

 

 

역시나! Call에 shell()의 주소값을 넣었더니 shell()함수가 실행됬다

 

함수 포인터라길래 겁을 먹었는데 의외로 쉽게 풀린 것 같다

반응형

'Pwnable > [Wargame] FTZ' 카테고리의 다른 글

FTZ Level18  (0) 2016.03.18
FTZ Level17  (0) 2016.03.18
FTZ Level15  (0) 2016.03.18
FTZ Level14  (0) 2016.03.18
FTZ Level13  (0) 2016.03.18
Comments