본문 바로가기
정보보안/시스템 해킹

ASLR&NX

by dustnn 2024. 12. 22.

ASLR(Address Space Layout Randomization)

공격자의 침입을 어렵게 하기 위해:

1. 메모리에서 임의의 버퍼 주소를 알기 어렵게 하기

2. 메모리 영역에서 불필요한 실행 권한 제거

 

 

NX(No-eXecute)

 

공격자의 침입을 어렵게 하기 위해:

1. 메모리에서 임의의 버퍼 주소를 알기 어렵게 하기

2. 메모리 영역에서 불필요한 실행 권한 제거

 

실행(x)에 사용되는 메모리 영역과 쓰기(w)에 사용되는 메모리 영역을 분리 

 

 

보호기법 확인하기

 

Ubuntu 바이너리

Checksec <파일명>

 

 

 

 

func에 갔을 때

 

 

 

Return to Library

 

rtl.c

 

 

=> Canary가 존재하고 NX가 활성화된 상태

 

스택 구조

디버깅해서 살펴보면 다음과 같은 스택 구조임을 확인할 수 있다.

취약점 분석

 

1. 

 

char buf[0x30] 즉, 버퍼 크기보다

0x100 즉, 입력이 더 크기 때문에 BOF

 

2.

(buf~canary까지의 거리+1)만큼의 크기를 입력받으면 canary leak

 

buf ~ canary 까지의 거리는 56 => A'를 57개 입력하면 canary 앞의 '\x00'가 제거돼 canary leak

 

<leak.py>: canary leak 시키는 코드

 

다음과 같이 canary가 노출됐다.

 

NX 가 활성화되어있음 => 메모리 영역에서 불필요한 실행 권한이 제거돼있음 => Return to library 실행해 공격

 

payload

 

 

라이브러리의 모습

 

<rtl.py>: Exploit 코드

 

 

근데 왜 아래와 같이 에러가 뜨는지 모르겠다.

'정보보안 > 시스템 해킹' 카테고리의 다른 글

시스템 해킹 입문하며  (0) 2024.12.22
Stack Buffer Overflow  (0) 2024.11.25
Dreamhack_Assembly Quiz  (0) 2024.11.25
Stack Canary  (0) 2024.11.25