Study
[PWN] gcc 옵션 보호 기법
aaaaalswl
2023. 11. 22. 17:19
옵션 모두 제거(32bit)
gcc -m32 -fno-stack-protector -mpreferred-stack-boundary=2 -z execstack -no-pie -o abcd abcd.c
ASLR
cat /proc/sys/kernel/randomize_va_space #check ASLR
echo 0 > /proc/sys/kernel/randomize_va_space
*#permission error 발생 시*
sudo bash -c "echo 0 > /proc/sys/kernel/randomize_va_space"
randomize_va_space=0이면 ASLR 해제
randomize_va_space=1이면 stack, library가 랜덤
randomize_va_space=2이면 stack, heap, library가 랜덤
우회기법 : memory leak, ROP ..
Canary (Stack Smashing Protector)
gcc -fno-stack-protector
메모리가 변조되었는지 검사
gcc -fstack-protector
canary 넣는 옵션
Nxbit
gcc -z execstack
stack에 실행 권한 제거
RELRO (RELocation Read Only)
gcc -z relro #Partial RELRO
gcc -z relro -z now #FULL RELRO
gcc -z norelro #NO RELRO
PIE
gcc -no-pie # no pie
gcc -fpie # .text ramdomize
gcc -fpie -pie # PIE
32bit compile
sudo apt-get install gcc-multilib #설치가 선행됨.
gcc -m32 #32bit compile
gcc -m64 #default
dummy 제거
gcc -mpreferred-stack-boundary=2 #32bit
gcc -mpreferred-stack-boundary=4 #64bit