본문 바로가기
.study/pwnable

[포너블 기초] RTL

by Carry_on 2023. 11. 12.

RTL(Return to Library)

  • RET을 공유 라이브러리 함수의 주소로 변경하여 해당 함수를 호출하는 기법
  • NX-bit 우회 가능(즉, 스택상에서 실행권한이 없을때 RTL사용)

RTL Chaining

RTL기법을 체이닝하여 원하는 함수를 여러개 호출하는 기법

 

RTL Chaining - x86

RET에 호출할 함수를 넣고, pop ret로 이전함수의 인자를 정리후, fun1()에서 사용할 인자를 전달

 

여기서 pop pop ret은 32bit 환경에서 함수호출 규약때문에 넣어주는 부분

호출할 함수의 인자 개수만큼 pop을 넣어준다

 

이런식으로 계속해서 ret에 다음에 실행시킬 함수를 체이닝하는 것이 RTL Chaining이다.

 

RTL Chaining - x64

x64에서는 함수 호출규약이 x86과 다르기 때문에 아래처럼 인자를 전달해야한다.