728x90
몇일 전에 HarekazeCTF가 있었는데 참여는 못했고
끝난 후 pwn문제가 있으면 풀어볼려고 찾다가 한 문제가 있어서 풀게 됬다.
64비트 파일이고 SSP/NX가 걸려있다.
실행을 시켜보니 가장 좋아하는 동물의 이름을 입력을 하라고 한다.
3번까지 입력을 받는다.ida로 열어서 분석을 해보자.
main을 확인을 해보니
read함수를 통해서 16글자를 입력을 받는다.
입력을 받는 글자가 cow,sheep,goat,hen중에서 하나라도 있으면 select_animals에 입력을 받는다.
(※select_animals에 입력을 받을 때 8바이트씩 동물을 저장을 한다.)
그리고 아래를 보면 6299808에 있는 값과 동물들 하나씩 비교를 해서 맞으면 문자열을 출력을 해준다.
(※6299808=0x6020A0(&select_animals))
그런데 isoroku라는 글자가 있으면 flag를 띄워준다.
하지만 위쪽에 동물을 입력하는 곳에 isoroku를 select_animals에 적재를 할 수 있는 방법이 없다.
그런데 잘 생각을 해보면 read로 16글자씩 받는데 동물당 8바이트 씩 메모리를 쓴다.
그러면 cow\x00\x00\x00\x00\x00isoroku\x00이렇게 하면 isoroku를 select_animals에 적재를 할 수 있다.
마지막에 개행문자를 넘겨주는 이유는
동물을 입력을 받으면 isoroku를 입력받은 자리를 덮어씌워서 개행을 통해서 입력을 받지 않았다.
서버가 닫혀있을 것 같아서 로컬로 익스플로잇을 했다.
'SYSTEM HACKING > 문제 풀이' 카테고리의 다른 글
Hack.lu CTF 2014 - oreo (2) | 2018.03.10 |
---|---|
2018 Codegate - Super marimo (0) | 2018.02.14 |
HITCON 2017 - Start (0) | 2018.02.11 |
2016 Codegate -Serial (0) | 2018.02.03 |
간단한 Crc CTF 문제 (0) | 2018.01.29 |