보호기법 완전 제거(ASLR 제외)
64비트
gcc -no-pie -fno-stack-protector -z norelro -z execstack -fno-builtin
32비트
gcc -m32 -no-pie -fno-stack-protector -z norelro -z execstack -fno-builtin -mpreferred-stack-boundary=2
ASLR 제거
echo 0 > /proc/sys/kernel/randomize_va_space
randomize_va_space = 0 | ASLR 제거 |
randomize_va_space = 1 | 스택, 라이브러리 랜덤 |
randomize_va_space = 2 | 스택, 라이브러리, 힙 랜덤 |
ulimit -s unlimited | 일시적 ASLR 해제 |
보호기법
Canary | -fno-stack-protector | SSP 해제 |
-fstack-protector | SSP 설정 | |
PIE | -no-pie | PIE 해제 |
-fpie | .text만 랜덤 | |
-fpie -pie | PIE 설정 | |
NX | -z execstack | 컴파일시 NX해제 |
RELRO | -z norelro | RELRO 해제 |
-Wl,-z,relro | PARTIAL-RELRO 설정 | |
-Wl,-z,relro,-z,now | FULL-RELRO 설정 |
-mpreferred-stack-boundary
범위 | 권장 값 (Dummy 제거) | |
32비트 | 2~12 | 2 |
64비트 | 4~12 | 4 |
라이브러리 링크 제외
-fno-builtin
https://gist.github.com/jrelo/f5c976fdc602688a0fd40288fde6d886
'Computer Security > System Hacking' 카테고리의 다른 글
[ptmalloc] 리눅스 동적할당 heap 하게 공부하자 (1) : chunk편 (0) | 2024.07.03 |
---|---|
[Sandbox] 샌드박스 보안 이해하기 : 보호 기법과 우회 방법 + Linux (0) | 2024.06.30 |
[Privilege Escalation] pwnable 관점에서 chroot jail 탈옥하기 (0) | 2024.06.29 |
재밌게 하는 시스템해킹 학습 방법 (0) | 2024.06.25 |
[Pwnable] ELF Segment Sections 빠르게 구하기 (.init_array, .fini_array, .dynamic, .got, .data) (0) | 2024.06.20 |