
Overview Phase 5는 phase 3을 ROP를 사용해서 푸는 문제다. Phase 3를 푸는 과정 및 touch3 함수의 구성은 지난 게시물에서 다루었다. typedef struct st { char cookie_str[9]; int cookie_val; } st; 요약하면 위와 같이 cookie값을 char, int로 각각 포함하는 struct st를 만들고, st의 주소값을 %rdi에 넣은 채로 touch3 함수를 call하는 문제다. ROP Phase 5에 쓰이는 gadget은 start_farm 함수와 end_farm 함수 사이에 위치한다. $ objdump -d rtarget > rtarget.d rtarget의 전체 내용을 disassemble한 결과인 rtarget.d를 열어 sta..

Overview Phase 4, 5는 각각 phase 2, 3과 같이 touch2, touch3 함수를 알맞는 argument와 함께 call하는 것이 목표로, 실행하고자 하는 machine code를 직접 input으로 넣어주었던(Code injection) phase 2, 3과 달리 이미 존재하는 machine code의 일부를 gadget으로 사용하는 ROP(Return-Oriented Programming)를 사용해야 한다. touch2 함수의 구성과 해당 phase 2를 푸는 과정은 지난 게시물에서 다루었다. 요약하면 %rdi에 자신의 cookie값이 들어있는 상태에서 touch2 함수를 call하면 된다. ROP Phase 4에 쓰이는 gadget은 start_farm 함수와 mid_farm ..