이 포스트에서는 시스템 프로그래밍(system programming)의 실습 과제 중 하나인 Attack Lab(어택 랩)의 풀이를 다룬다. Attack Lab은 버퍼 오버플로우를 활용하여 문제의 의도대로 프로그램을 조작하여 원하는 데이터를 얻는 등의 처리를 하는 과제이다. 프로그램은 ctarget과 rtarget의 2개가 존재하며, ctarget은 touch1, touch2, touch3의 3개의 함수가 존재하고 rtarget은 touch2, touch3의 2개의 함수가 존재한다. (편의상 이들을 Phase 1 ~ 5로 칭하기도 한다.) ctarget은 code injection attack을 이용하여 attack하고 rtarget은 return-oriented programming을 이용하여 atta..