ROP는 리턴 가젯을 사용하여 복잡한 실행 흐름을 구현하는 기법입니다. 공격자는 이를 이용해서 문제 상황에 맞춰 return to library, return to dl-resolve, GOT overwrite 등의 페이로드를 구성할 수 있습니다

<aside> 🎬 ASLR & NX

ASLR

**Address Space Layout Randomization(ASLR)**은 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법입니다.


특징

<aside> 🚡 PLT와 GOT

PLT

**PLT(Procedure Linkage Table)**는 외부 프로시저를 연결해주는 테이블입니다.


GOT

PLT가 참조하는 테이블입니다


특징

<aside> 📬 Return To Library

return to library

return to libarary는 NX로 인해 버퍼에 주입한 셸코드를 실행하기 어렵지만 ret 주소는 덮을수 있는 것을 이용해서 실행 권한이 남아 있는 바이너리 코드 영역과 라이브러리 코드 영역중 라이브러리 코드 영역을 이용해서 libc의 함수들을 이용해 NX를 우회하는 기법이라고 한다.

</aside>

return to library

위와 같은 문제 풀이를 통해 library를 활용한 return to library를 알 수 있다.

<aside> 🪐 GOT Overwrite

GOT Overwrite

8a194647bcedfe6e5a046f7ac5f8de5b53e79f130e34ca119484e90c7648580d.png

위를 이용해 ret 가젯으로 어떤 함수의 got주소를 바꿔 호출하여 우리가 원하는 주소로 이동하여 실행하게 한다.

ROP

ROP64

</aside>