ASLR 보호기법 특징

Untitled

cat /proc/sys/kernel/randomize_va_space

리눅스에서 위 명령을 통해 ASLR 보호기법에 작동 유무를 파악할 수 있다.

** ASLR 보호기법은 커널에서 이루어지는 보호기법이다.

Untitled

// Name: addr.c
// Compile: gcc addr.c -o addr -ldl -no-pie -fno-PIE
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
  char buf_stack[0x10];                   // 스택 버퍼
  char *buf_heap = (char *)malloc(0x10);  // 힙 버퍼
  printf("buf_stack addr: %p\\n", buf_stack);
  printf("buf_heap addr: %p\\n", buf_heap);
  printf("libc_base addr: %p\\n",
         *(void **)dlopen("libc.so.6", RTLD_LAZY));  // 라이브러리 주소
  printf("printf addr: %p\\n",
         dlsym(dlopen("libc.so.6", RTLD_LAZY),
               "printf"));  // 라이브러리 함수의 주소
  printf("main addr: %p\\n", main);  // 코드 영역의 함수 주소
}