[Mitigation] RELRO | RELocation Read-Only

2025. 5. 15. 20:23·Hacking/Pwnable
728x90
반응형
쓰기 권한이 불필요한 데이터 세그먼트에 쓰기 권한을 제거함
데이터가 배치된 메모리의 특정 부분에 읽기 전용 속성을 부여함

 

https://m-in-zu.tistory.com/77

 

Static Link vs Dynamic Link

Compile | 컴파일컴파일은 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어로 변환하는 작업즉, 바이너리 형태로 변환하는 작업이다. (기계어)Pre-Processing : 전처리기 (Pre

m-in-zu.tistory.com

 

 

 

 

PLT, GOT의 Lazy Binding의 경우, GOT가 존재하는 영역에 쓰기 권한이 부여된다. 

또한, ELF의 데이터 세그먼트에는 프로세스의 초기화 및 종료를 진행하는 .init_array, .fini_array가 존재한다. 

따라서, 데이터 세그먼트에 존재하는 값들에 쓰기 권한을 부여하면 익스플로잇 가능성이 높아지기 때문에 이를 막기 위해,쓰기 권한이 필요하지 않은 데이터 세그먼트에 쓰기 권한을 제거하는 RELRO를 보호 기법으로 사용한다. 

 

Partial RELRO

명령어 옵션 : gcc -Wl, -z, relro

INIT_ARRAY, FINI_ARRAY 등이 보호가 된다. 

해당 바이너리의 objdump,와 ./prelro의 권한 확인으로 확실히 확인할 수 있다.

 

Full RELRO

명령어 옵션 : gcfc-Wl, -z, 

NOW Binding을 이용하여 plt, got에 쓰기 권한이 없다. 

따라서 got overwrite 등과 같은 공격 기법을 사용할 수 없다. 

 

Bypass RELRO

Partial RELRO의 경우, 여전히 GOT overwrite 기법을 활용할 수 있다. 

Full RELRO의 경우, .init_array, .fini_array, got, plt 영역에 권한이 모두 없으므로 hook을 사용할 수 있다. 

Hook Overwrite

hook은, 동적 메모리의 할당과 해제 과정에서 사용하는 함수이다. 

__malloc_hook은 libc.so에서 쓰기 가능한 영역에 위치하기 때문에, 이 변수 조작을 통해 malloc으로 익스플로잇을 할 수 있다. 

__free_hook도 마찬가지로, 이 변수 조작을 통해 free로 익스플로잇을 할 수 있다. 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Hacking > Pwnable' 카테고리의 다른 글

[Exploit] Hook Overwrite  (0) 2025.05.28
[Mitigation] PIE | Position Independent Executable  (0) 2025.05.12
[Exploit] Return Oriented Programming (ROP chain)  (0) 2024.09.19
[Exploit] Return to Library  (0) 2024.09.06
[Mitigation] ASLR  (0) 2024.08.25
'Hacking/Pwnable' 카테고리의 다른 글
  • [Exploit] Hook Overwrite
  • [Mitigation] PIE | Position Independent Executable
  • [Exploit] Return Oriented Programming (ROP chain)
  • [Exploit] Return to Library
min_zu
min_zu
  • min_zu
    민주제도
    min_zu
  • 전체
    오늘
    어제
    • ._. (176)
      • AI (2)
        • DeepLearning (2)
        • CS231n (0)
      • Web (2)
        • ReactJS (0)
      • CS (83)
        • OS (7)
        • Data Structure (23)
        • Computer Architecture (8)
        • Computer Network (20)
        • Algorithm (25)
      • Linux (3)
        • KaliLinux (0)
        • Docker (1)
      • Hacking (83)
        • Write Up (25)
        • Pwnable (13)
        • Reversing (2)
        • Cryptography (12)
        • Web Hacking (4)
        • Window (6)
        • Network (7)
        • Web3 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Graph
    DeepLearning
    AI
    Web
    Tree
    Mac
    DataStructure
    OS
    Linux
    Search
    Sort
    ComputerArchitecture
    WinAFL
    UTM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
min_zu
[Mitigation] RELRO | RELocation Read-Only
상단으로

티스토리툴바