힌트를 살펴보니, level9에서 "go" 가 원하는 곳에 오도록 하는 문제와 비슷해보인다.
다른 점은 check 가 0xdeadbeef 여야 한다는 것?
입력은 buf 에 버퍼 크기는 20 byte.
사용자로부터 45byte까지 입력 받을 수 있고, check 는 어디에 위치해 있는지 디버깅을 통해 확인해보자.
작성 후 컴파일, 디버깅.
스택으로 확인해보면,
buf 는 ebp 보다 56 바이트 위 할당
cmp로 비교되는 check 은 ebp 보다 16 바이트 위 할당
따라서 둘의 차이는 40 바이트가 될 것이다.
페이로드는 40 바이트 만큼 오버플로우 후 0xdeadbeef 를 입력하면 되는 것.
(python -c 'print "a"*40 + "\xef\xbe\xad\xde"';cat ) | /home/level14/attackme
또 짤려서 다 적어봄.
암튼 level9 에서와 마찬가지로 오버플로우 시켜서
level15 password "guess what" 획득 !
'WARGAME > FTZ [system]' 카테고리의 다른 글
ftz level 16 [level16] (0) | 2020.05.01 |
---|---|
ftz level 15 [level15] (0) | 2020.05.01 |
ftz level 13 [level13] (0) | 2020.04.30 |
ftz level 12 [level12] (0) | 2020.04.30 |
ftz level 11 [level11] (0) | 2020.04.30 |