Quero fazer alguns experimentos com estouros de buffer em minhas várias máquinas virtuais, incluindo (mas não limitado a) Debian 6, Ubuntu 12.04, Fedora 16, mas toda vez que tento executar a exploração de buffer overflow, recebo a seguinte mensagem:
stack smashing detected (core dumped)
Depois de fazer minha pesquisa, li que é um recurso chamado proteção contra buffer overflow implementada no compilador. O GCC, por exemplo, usa o GCC Stack-Smashing Protector (ProPolice) , o Clang / LLVM usa dois detectores de buffer overflow, SafeCode e AddressSanitizer .
Minha pergunta é: Como eu realmente quero verificar ataques de estouro de buffer em minhas máquinas, existe uma maneira (um sinalizador de compilador, talvez? Um arquivo de configuração do linux?) Desativar a proteção de estouro de buffer?
__stack_chk_fail
(por exemplo,strings /bin/mybinary | grep __stack_chk_fail
-fno-stack-protector-all
não é reconhecido (-fstack-protector
,-fstack-protector-all
e-fno-stack-protector
são reconhecidos)gcc: error: unrecognized command line option ‘-fno-stack-protector-all’; did you mean ‘-fstack-protector-all’?