먼저 goblin.c 를 열어보자. level2에서는 argv로 인자를 받아 프로그램을 실행하는데, 이건 gets 함수를 이용하여 문자열 입력을 받는다. 뭐..마찬가지로 gets()도 문자열 길이 검사를 하지 않아 오버플로우 취약점이 존재한다. 그럼 뭐부터 해야할 까.. 인자로 받아서 하는 거나 마찬가지다. 입력값을 goblin으로 돌려주면된다. 이미 FTZ Level 12 에서 언급하였다. 일단 RET를 정해줘야 한다. 어디 올릴지 찾아보자. 아.. 버퍼가 16바이트 밖에 안된다. level2에서 했던 방법 처럼 argv[2]에 넣어야 겠다. 페이로드를 구성해보자. [buf]: nop 16 byte [sfp]: nop 4 byte [ret]: argv[2]의 주소 (0xbffffbdf) + nop 10..