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과 다르기 때문에 아래처럼 인자를 전달해야한다.
'.study > pwnable' 카테고리의 다른 글
[포너블 기초] _IO_FILE (0) | 2023.11.26 |
---|---|
[포너블 기초] Out-Of-Bounds (1) | 2023.11.19 |
[포너블 기초] GOT Overwrite, RTL Chaining (0) | 2023.11.12 |
[포너블 기초]Shell Craft, Lazy Binding (0) | 2023.10.25 |
[포너블 기초] Egg Shell, NX-Bit (0) | 2023.10.23 |