마찬가지로 BOF
스택가드와 비슷하다.
바로 디버깅을 하자. (그 전에 망할 권한때매, ./tmp에 복사를 하고 하자..)
사용된 지역변수+더미의 크기는 0x38, 10진수로 환산하면 56이다.
deadbeef를 검사하는 <main+29>부분을 BP를 걸자..
그전에 잠시 GDB를 나와서 프로그램 하나를 아래와 같이 짜보자
프로그램의 용도는 각 변수마다 거리가 어느정도인지 짐작하기 위해 하는 것!
바로 코딩후 동작결과를 보자
buf, check, crap주소를 각각 얻었다! 그러면 메모리 구조를 생각해보면
맨위에 buf+더미 크기40만큼, check 크기4만큼 그리고crap이 확인되었다.
메모리 구조를 간략적으로 알았으니
다시 gdb를 가보자.
그리고 deadbeef를 검사하는 <main+29>부분을 BP를 걸자
그리고 AAAA입력
그러면 이제 메모리 주소도 알았고 0xbfffeda0부터 40만큼 떨어진 곳 0xbfffed8에 0xdeadbeef이 들어가기만 하면 된다.
공격은 간단하다. 40개를 쓰레기값채우고 deadbeef를 채우면끗
'Pwnable > FTZ' 카테고리의 다른 글
FTZ Level16 풀이 (0) | 2016.07.17 |
---|---|
FTZ Level15 풀이(해결) (0) | 2016.07.16 |
FTZ Level13 풀이(해결) (0) | 2016.07.16 |
FTZ Level12 풀이(EggShell로 해결) (0) | 2016.07.16 |
FTZ Level11 풀이 (0) | 2016.07.15 |