반응형
FTZ Level 14
ID : level14
Passwd : what that nigga want?
접속해서 ls 명령어로 파일과 디렉터리를 확인합니다.
cat 명령어로 hint를 열어봅니다. buf에 fgets로 크기 제한을 두고 값을 입력 받습니다. 하지만 buf의 크기는 20byte. 크기 제한이 조금 잘못된 것 같습니다. 그리고 지금까지와는 다르게 셸코드를 통해서 쉘을 띄우는 게 아니라 조건에 맞으면 알아서 띄워줍니다.
tmp에 복사하고 gdb로 열어 main 함수를 디스어셈블 해봅시다.
fgets 함수에서 첫 번째 인자, 즉 마지막으로 push하는 인자가 buf의 시작 주소가 될 것입니다.
main+17을 보면 buf의 시작 주소가 ebp-56입니다.
main+29를 보면 check의 주소가 ebp-16입니다.
ebp-56 ~ ebp-16을 dummy 값으로 채우고 check를 변조하면 되겠네요. 그리고 fgets 함수이니 |(파이프)를 사용해서 전달 해야겠죠? 0xdeadbeef를 입력할 때는 리틀 엔디안 방식으로 넘겨줍시다.
payload : (python –c ‘print “A”*40 + “\xef\xbe\xad\xde”’; cat) | ./attackme
원본 파일에 공격해봅시다.
exploit!
감사합니다.
반응형
'System&Write up > FTZ' 카테고리의 다른 글
FTZ level16 -> level17 Write up (0) | 2017.09.25 |
---|---|
FTZ level15 -> level16 Write up (0) | 2017.09.25 |
FTZ level13 -> level14 Write up (0) | 2017.09.25 |
FTZ level12 -> level13 Write up (0) | 2017.09.24 |
FTZ level11 -> level12 Write up (0) | 2017.09.24 |