이번 문제는 기존의 쉘 코드 삽입 방식이 차단된 상황에서 Return to Libc(RTL) 기법을 활용해서 쉘을 실행하는 방식으로 해결했다. stack에 쉘코드를 넣고 그 위치로 return을 덮는 방식은 실패하기 때문에 라이브러리 함수인 system()을 이용하여 우회하였다. RTL(Return to Libc) 기법이란? stack 실행이 불가능한 상황에서 공격자가 쉘코드 없이도 시스템 명령을 실행할 수 있는 우회 기법이다. 1. 취약점으로 ret 주소를 덮는다. 2. ret 주소를 system() 함수 주소로 설정한다. 3. 그리고 stack에는 system()에 넘길 인자인 /bin/sh를 넣어준다. 즉, 쉘코드가 차단된 상황에서도 libc 함수와 문자열 리터럴만으로 쉘을 실행할 수 있는 기..