취약점분석/Pwnable
[Pwnable] RELRO (RELocation Read Only)
poiri3r
2025. 10. 4. 21:32
저희가 저번에 GOT overwrite를 통해서 워게임 문제를 풀었었습니다.
GOT 테이블에 값을 쓰고 부르는 것을 막기 위해 RELRO라는 메모리 보호 기법이 있는데, RELRO기법은 쓰기 권한이 불필요한 데이터 섹션에 쓰기 권한을 제거하는 보호 기법입니다.
RELRO는 부분적으로 적용하는 Partial RELRO와 넓은 영역에 적용하는 Full RELRO 두가지로 나누어집니다.
PIE를 해제하면 자동으로 Partial RELRO가 적용됩니다.
저희가 저번 PIE를 공부할 떄 사용했던 pie파일과 no_pic파일 두개를 비교해보겠습니다.

먼저 PIE가 적용된 파일은 RELRO가 Full RELRO가 적용된 모습입니다.

PIE가 적용되지 않은 no_pic같은 경우 Partial RELRO가 적용되어 있는 걸 확인할 수 있습니다.
FullRELRO가 적용된 경우 프로그램이 실행될 때 GOT 영역에 미리 다 써진 뒤, got섹션에 쓰기 권한이 삭제되어 아까 말했든 got overwrite를 방지할 수 있습니다.
다만 프로그램의 시작속도가 낮춰진다는 단점도 가지고 있습니다.
RELRO의 개념에 대해서 아주 간단하게만 살펴보았고 FullRELRO의 우회에 대해서는 다음 포스팅에 드림핵의 Hook Overwrite writeup과 함께 작성해보도록 하겠습니다.
읽어주셔서 감사합니다.