앞선 문제들과는 다르게 쉘 코드가 실행이 안되도록 NX enabled되어 있다. 즉, 쉘 코드 삽입은 불가능하다. 일단, 먼저 다운로드 받은 소스코드부터 보자. 버퍼의 크기는 0x80이다. 그런데 버퍼를 받는 함수를 보니 gets()함수다. gets()함수도 인풋값을 입력하는데 제한이 없기 때문에 동일하게 버퍼 오버플로우 문제가 발생한다. 또한 쉘 코드가 아니라 명령어로 flag를 출력하는 것으로 보이니, 리턴 주소를 read_flag()의 주소로 바꾸면 cat /flag를 통해서 값을 찾을 수 있을 것이다. 이제 gdb로 분석해보자.버퍼의 크기는 128바이트이고 아키텍처가 32비트이니 push ebp의 값은 4바이트 총 132 바이트가 필요하다. 또한 read_flag의 주소도 찾았다. 이제 주어..