인터넷에 풀이가 많이 있는데, 대부분 GOT덮고 system 함수를 부르는 방법이다. 쉘코드를 올려서 푸는 방법으로 풀이 해보고자 한다. 바이너리에는 NX가 걸려있기 때문에 바로 쉘코드로 뛰면 segmentation fault가 뜰 것이다. 그래서 mprotect 함수로 실행 권한을 풀어주고, 그쪽으로 뛰어주면 되겠다. 시나리오는 다음과 같다. 1. GOT를 이용해 libc 릭 2. 취약한 함수를 다시 불러서 오버플로우를 한 번 더 발생시킨다. 3. mprotect 함수로 bss에 rwx권한을 모두 준다. (prot=7) 4. read 함수로 bss에 쉘코드를 받는다. 5. read 함수가 끝나고 쉘코드 주소로 뛴다. 앞서 언급한 GOT를 덮는 방법으로 풀어본 경험이 있다면, 페이로드를 짜는데 특별히 까..