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 |