# gcc -z execstack -o test test.c // 컴파일 시 nx 해체
# sysctl-w kernel.exec-shield=0 // nx 해체
# sysctl-w kernel.exec-shield=1 // nx 설정
# gcc -fno-stack-protector -o test test.c // ssp 해체
# gcc -mpreferred-stack-boundary=2 // dummy 값 고정
# sysctl -w kernel.randomize_va_space=0 // aslr 해체
# sysctl -w kernel.randomize_va_space=1 // stack aslr 설정
# sysctl -w kernel.randomize_va_space=2 // stack, heap aslr 설정
# ulimit -s unlimited // aslr 일시적 해체
# gcc -Wl, -z, relro -o test test.c // Partial RELRO
# gcc -Wl, -z, relro, -z, now // Full RELRO
# gcc -z norelro -o test test.c // No RELRO
# -mpreferred-stack-boundary=2
기준
ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-77-generic x86_64)
gcc 5.4.0 20160609
gcc랑 관련없는 건데 이 운영체제에서 계속 ASLR을 끄고 싶어
echo "kernel.randomize_va_space=0" > /etc/sysctl.d/01-disable-aslr.conf
32비트로 컴파일하고 싶어
-m32
-m32 옵션을 줬는데 이상해
sudo apt install gcc-multilib
32비트로 컴파일하니까 main 함수에 스택을 정렬하는 이상한 인스트럭션이 있어서 짜증나
-mpreferred-stack-boundary=2
최적화 옵션을 주니까 printf@plt가 __printf_chk@plt로 바뀌는 게 싫어
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
CANARY를 없애고 싶어
-fno-stack-protector
스택에 실행 권한을 주고 싶어
-z execstack
No RELRO가 기본값인데 Partial RELRO가 필요해
-z relro
No RELRO가 기본값인데 Full RELRO가 필요해
-z relro -z now
Partial RELRO가 기본값인데 No RELRO가 필요해
-z norelro
Partial RELRO가 기본값인데 Full RELRO가 필요해
-z now
.text가 랜덤이면 좋겠어
-fpie
PIE가 쓰고 싶어
-fpie -pie
2018-03-26 추가사항
레드햇에서 정리한 플래그
'Debugger > GDB' 카테고리의 다른 글
[GEF] gef missing (python3 에러) (0) | 2020.01.05 |
---|---|
[GEF] Pattern 생성과 활용 (0) | 2020.01.04 |
[GDB] GDB의 인자값으로 파이썬 출력 값을 사용하기 (0) | 2019.12.29 |
[GDB] 사용자 input으로 hex값 입력 값하기 (0) | 2019.12.28 |
[GDB] 사용법, 명령어 정리 (0) | 2019.12.28 |