level14

 

 힌트를 확인해보면 buf는 20 byte인데 45 byte를 입력받고 있다. 또한 check의 값을 확인해 그 값이 "\xdeadbeef"가 되면 level15의 권한으로 쉘을 실행할 수 있다. 

 

 cmp 명령을 살펴보면 [ebp-16]과 비교하고 있다. 또한 그 위를 살펴보면 [ebp-56]에 fgets 함수로 값을 대입받는 것을 확인할 수 있다. 따라서 56-16인 40만큼 값을 채우고, 그 뒤에"\xdeadbeef"가 들어가게 되면 문제가 해결된다.  

 

 gdb로 임의의 40 byte와 "\xed\xbe\xad\xbe"를 넣어주니 정상적으로 "\xdeadbeef"가 들어간 것을 확인할 수 있다. 

 

 위에서 입력한 값 그대로 입력하고 cat 명령으로 잡아준 뒤 my-pass 명령어를 입력하니 패스워드가 출력됐다. 

 

 

 guess what

 

728x90

'CTF > 시스템' 카테고리의 다른 글

해커스쿨 FTZ level16  (0) 2020.09.24
해커스쿨 FTZ level15  (0) 2020.09.24
해커스쿨 FTZ level13  (0) 2020.09.22
해커스쿨 FTZ level12  (0) 2020.09.17
해커스쿨 FTZ level11  (0) 2020.09.17