이 문제는 level14 와 정말 비슷해보이지만 차이는
check 라는 포인터 변수가 가리키는 주소의 값이 0xdeadbeed 가 되도록 해야한다.
귀찮으니까 attackme 를 level14/tmp 위치에 복사 시킨후 디버깅해보자.
앞 문제에서 본 결과와 같은 것을 볼 수 있다.
오버플로우 방법은 여러가지가 있을 수 있지만 내가 생각해낸 방법은 바로
check 포인터 자리에 deadbeef 문자열이 들어있는 주소가 오도록 오버플로우 시키는 방법이다.
먼저 strcmp 을 하는 부분에 브포를 걸고 실행시켜서 deadbeef 문자열이 들어있는 곳의 주소를 찾아내자.
eip 레지스터(다음 명령어 ) 의 주소값을 출력하기 위해 넉넉히 32개의 16진수로 출력을 해주면,
deadbeef 문자열이 담긴 주소 0x80484b2 를 알아낼 수 있다.
이제 buf 와 *check 의 차이가 40 바이트 이므로 참고하여 페이로드를 짜서 입력하면,
(level14 풀이 참고)
level16 password "about to cause mass" 획득 !
'WARGAME > FTZ [system]' 카테고리의 다른 글
ftz level 17 [level17] (0) | 2020.05.01 |
---|---|
ftz level 16 [level16] (0) | 2020.05.01 |
ftz level 14 [level14] (0) | 2020.04.30 |
ftz level 13 [level13] (0) | 2020.04.30 |
ftz level 12 [level12] (0) | 2020.04.30 |