Debian 6, Ubuntu 12.04, Fedora 16을 포함하여(이에 국한되지 않음) 다양한 가상 머신에서 버퍼 오버플로 실험을 실행하고 싶지만 버퍼 오버플로 공격을 실행하려고 할 때마다 다음 메시지가 나타납니다.
stack smashing detected (core dumped)
좀 조사한 끝에 이것이라는 프로그램이라는 것을 알게 되었습니다.버퍼 오버플로 방지컴파일러에서 구현됩니다.걸프 협력 협의회예를 들어GCC 스택 스매시 프로텍터(ProPolice),클랭/llvm사용두 개의 버퍼 오버플로 감지기, SafeCode 및 AddressSanitizer.
내 질문은: 버퍼 오버플로 공격을 확인하고 싶기 때문입니다.내 컴퓨터에버퍼 오버플로 보호를 비활성화할 수 있는 방법(컴파일러 플래그, Linux 구성 파일 등)이 있습니까?
답변1
걸프 협력 협의회
gcc( man gcc
)에서 확인은 다음과 같이 활성화됩니다.
-fstack-protector Emit extra code to check for buffer overflows, such as stack smashing attacks. >This is done by adding a guard variable to functions with vulnerable objects. This includes functions that call alloca, and functions with >buffers larger than 8 bytes. The guards are initialized when a function is entered and then checked when the function exits. If a guard check >fails, an error message is printed and the program exits. -fstack-protector-all Like -fstack-protector except that all functions are protected.
no-
옵션 이름 앞에 추가하면 둘 다 비활성화 할 수 있습니다 .
-fno-stack-protector -fno-stack-protector-all
LLVM/클랭
LLVM/Clang 정보(http://clang.llvm.org/docs/UsersManual.html#commandline) AdressSanitizer를 활성화/비활성화합니다.
-f[no-]address-sanitizer: 메모리 오류 감지기인 AddressSanitizer를 켭니다.
및 보안 코드(http://safecode.cs.illinois.edu/docs/UsersGuide.html)
-f[none-] 메모리 안전