angry doraemon1 [2014 Codegate] angry_doraemon 로컬에 doraemon.txt / bread.txt / mouse.txt 있어야 문제가 제대로 돌아간다. 환경은 Ubuntu 14.04 를 이용했다. 문제를 로컬에서 실행시키면 8888번 포트를 통해서 돌아간다. 이런저런 루틴을 거쳐서 sub_8049201 함수로 들어가게 되는데 아이다로 까보면 아래와 같다. 이 중 sub_8048fc6 함수(4. Throw mouse 메뉴)에서 오버플로우가 발생한다. buf 크기는 4byte인데 110byte를 read 한다. 그리고 if((BYTE)buf == 121) y인지 확인하고 맞다면 사용자의 입력값을 출력해주는데 이 부분을 통해 카나리를 leak 하고 rop하면 된다. sprintf는 buf를 출력해줄 때 NULL을 만날때까지 출력해주기 때문에 카나리의 첫바.. 2016. 7. 7. 이전 1 다음