알맹이방
FTZ level 9 본문
level 9
힌트를 열었더니 코드가 나온다.
buf 가 나오는 것을 보아 오버플로우를 이용하는 것 같다.
일단 buf2가 10이고
buf가 10이고
용량은 10인데
fget으로 buf에 40까지 넣을 수 있는 것이다.
이렇게 원래 용량보다 많은 데이터가 들어가게 되면 오버플로우가 일어나면서
에러가 생기는 것이다.
그래서 이 코드의 취약점이 fget인 것이다.
또 buf2에 첫 문구 두 자리가 go 면
풀리는 것 같다.
일단 vi를 이용해 한글이 없는 코드만을 빼왔다.
편집모드에서 x를 이용하여 한글을 다 지워줬다.
이렇게 지워줬다.
그리고 컴파일 시키고
디버깅 해봤다.
fgets는 ebp-40 에 있고
문자를 받은 것으로 보아 buf에 데이터가 들어간다.
그리고 strncmp는 ebp-24에 있는데
비교하는 것으로 보아 buf2에 위치한다.
**여기서부터 집중력과 이해력이 요망되어 그냥 노트에 생각을 정리했다**
이렇기에 buf 에 자리를 꽉 채워주어 buf2까지 데이터가 흘러넘치게 만든다.
buf에 A와 같은 아무 글자나 넣어서 넘치게 한다.
24와 40사이에 16의 빈자리가 있어서 16개 넣어주었다.
그 다음에 바로 g와 o를 넣었다.
whoami로 누군지 물어보니 level10이라고 한다.
다음 단계로 넘어온 것이다.
거기에서 바로 my-pass 를 입력하니 level10의 비밀번호를 뱉는다.
끝!
'SISS (2017-2018) > FTZ' 카테고리의 다른 글
FTZ level 8 (0) | 2018.02.25 |
---|---|
FTZ level 7 (0) | 2018.02.24 |
FTZ level 6 (0) | 2018.02.10 |
FTZ level 5 (0) | 2018.02.10 |
FTZ level 4 (0) | 2018.01.21 |
Comments