Я хочу провести некоторые эксперименты с переполнением буфера на разных виртуальных машинах, включая (но не ограничиваясь этим) Debian 6, Ubuntu 12.04, Fedora 16, но каждый раз, когда я пытаюсь выполнить эксплойт с переполнением буфера, я получаю следующее сообщение:
stack smashing detected (core dumped)
Проведя исследование, я прочитал, что в компиляторе реализована функция защиты от переполнения буфера . GCC , например , использует GCC-Стек Разбивающийся протектор (ProPolice) , Clang / LLVM использует два детектора переполнения буфера, SafeCode и AddressSanitizer .
Мой вопрос: поскольку я действительно хочу проверить атаки переполнения буфера на моих машинах, есть ли способ (флаг компилятора, возможно, файл конфигурации Linux), чтобы отключить защиту от переполнения буфера?
__stack_chk_fail
(например,strings /bin/mybinary | grep __stack_chk_fail
-fno-stack-protector-all
не признается (-fstack-protector
,-fstack-protector-all
и-fno-stack-protector
признаются)gcc: error: unrecognized command line option ‘-fno-stack-protector-all’; did you mean ‘-fstack-protector-all’?