RIP (EIP) 는 프로그램이 현재 실행시켜야할 Instruction 이 저장된 주소를 가르킨다. 이때 RIP 가 우리가 원하는 Instruction 이 저장된 주소를 가르키게 할 수 있다면, 프로그램의 흐름을 우리가 원하는 대로 redirection 할 수 있게 된다.
<vuln+61>
: call 0x80483ec : RIP (EIP) 가 0x80483ec 가 된다. 이는 exit 함수의 Instructions 임을 알 수 있다.
<exit@plt+0>
: jmp *0x8049724 : RIP (EIP) 가 0x8049724 가 참조하는 값이 된다.
printf 와 %n 을 활용해,
*0x8049724 = 0x080484b4 : Hello ( ) 함수의 Instructions 시작 주소
위와 같은 작업을 수행하여 redirection 시킨다.