cat hint 해보면
이것이 나온다.
실행은 /usr/bin/bof에서 하는 것이다.
fgets함수를 보면 buf,40 이라고 되어있는데 buf는 10개만 할당되어 있으므로 이것을 이용해 버퍼오버플로우를 사용하면 된다.
그리고 strncmp(buf2,"go",2)==0 이니 buf2를 go로 만들어주면 아래에 세개 함수들이 모두 작동한다.
그럼 이제 level9의 tmp파일에 가서 aaa.c라는 파일로 hint에 있는 내용을 똑같이 입력하겠다.
(마우스 오른쪽 버튼을 누르면 복사가 된다.)
이렇게하고 ESC누르고 :wq로 저장을 한다.
그다음 gcc -o aaa aaa.c 위와같이 aaa파일을 만든다.
그리고 gdb 명령어를 사용해본다.
gdb aaa를 하고
gdb 안에서 set disas intel을 입력한다. (set disas main은 오타../)
(바로 disas main을 해도 되지만 set disas intel을 해주는게 보기 편하다.)
disas main하면
이렇게 보이는데
fgets를 사용하는 배열에 buf였다. buf는 ebp-40부터 사용한다.
그리고 strncmp를 사용하는 배열에 buf2였으므로 buf2는 ebp-24부터 사용한다.
결국 40-24를 빼준 16글자만큼 아무 글자나 채워주고 go를 뒤에 붙여주면 된다.
/usr/bin에 가서 bof를 실행해서
aaaaaaaaaaaaaaaago 이런식으로 입력하면 될것이다.
그리고 my-pass를 하면 답이 나온다.
'System, Pwn > ftz' 카테고리의 다른 글
level 9부터는 버퍼오버플로우 내용이다. (0) | 2019.08.19 |
---|---|
ftz level8 (0) | 2019.08.19 |
ftz level5 (0) | 2019.08.19 |
ftz level4 (0) | 2019.08.17 |
ftz level3 (0) | 2019.08.17 |