[Exploit] Return to Library

2024. 9. 6. 23:16·Hacking/Pwnable
728x90
반응형

Library

자주 사용하는 소스코드를 미리 작성하여 프로그래머가 원할 때 빠르게 사용할 수 있게 가공된 형태
  • 컴파일 시간 단축
  • 소스 코드를 쉽게 사용 가능
  • 소스 코드의 일부를 보호 및 비공개 가능

PLT & GOT

PLT (procedure linkage table) : 외부 라이브러리에서 함수가 plt에 매핑되어 있다.

GOT (golbal offset table) : 함수의 주소를 담고 있는 테이블로 plt가 got를 참조한다.

PLT와 GOT에 대한 자세한 설명 : https://m-in-zu.tistory.com/77

 

Static Link vs Dynamic Link

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

m-in-zu.tistory.com

 

Return To Library 

NX를 Bypass 하기 위한 방법으로 제시된 익스플로잇 기법이다

실행 권한이 남아있는 코드 영역(라이브러리)으로 반환 주소를 덮는 공격 기법 

 

프로세스에 실행 권한이 있는 메모리 영역

  • 바이너리 코드 영역
  • 라이브러리 코드 영역

표준 C 라이브러리를 libc라고 함

따라서 해당 공격기법인 Return To Library는 Return To Libc (ret2libc)라고도 하며, 이 하위에는 Return To PLT로, PLT를 사용하여 라이브러리의 코드를 사용하는 공격기법이 있다. 

NX / DEP Bypass

NX bit가 설정되면 스택, 힙 등 메모리 대부분 영역이 실행 권한이 없다.

(윈도우의 경우 DEP라고 함)

즉, 스택이나 힙에 쉘코드 등을 올리는 단순한 방법으로는 익스플로잇이 불가능하다. 

따라서 라이브러리 코드 영역을 이용하여 실행한다

 

libc

libc에는 system, execve 등 프로세스의 실행 흐름을 가져올 수 있는 함수들이 존재함

함수들 뿐만 아니라 /bin/sh 문자열도 존재한다.

이 문자열을 system에 전달하면 system("/bin/sh")를 실행할 수 있음

 

GDB로 RTL

libc의 base 주소와, libc 내의 함수 주소의 차이는 항상 같다.

즉, libc에 저장된 함수들은 순서대로 되어있음 > libc_base와 알아내고자 하는 함수의 주소 차이는 항상 같음

* ASLR이 걸려있어도 함수와 base 주소의 차이를 통해 쉽게 계산할 수 있음

print system

을 하면, system의 주소를 프린트 한다

find 라이브러리 주소 시작, 라이브러리 주소 끝, "/bin/sh"

해당 명령어를 입력하면 "/bin/sh"의 위치를 알 수 있다

 

이러한 명령어를 조합하여, Return address에 system("/bin/sh") 명령어를 스택이나 힙에 직접 쓰지 않고 라이브러리를 사용하여 익스플로잇 할 수 있음

 

reference

- Dreamhack SystemHacking > Exploit:return to library

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

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

[Mitigation] PIE | Position Independent Executable  (0) 2025.05.12
[Exploit] Return Oriented Programming (ROP chain)  (0) 2024.09.19
[Mitigation] ASLR  (0) 2024.08.25
[Mitigation] NX  (0) 2024.08.25
[Mitigation] Stack Canary  (0) 2024.08.24
'Hacking/Pwnable' 카테고리의 다른 글
  • [Mitigation] PIE | Position Independent Executable
  • [Exploit] Return Oriented Programming (ROP chain)
  • [Mitigation] ASLR
  • [Mitigation] NX
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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
min_zu
[Exploit] Return to Library
상단으로

티스토리툴바