Как заставить Linux выполнять данные в стеке?
У меня процессор Core i7 720QM, и я использую Slackware 13.37 (32-разрядную версию) в качестве виртуальной машины. Как назначение класса, я должен написать уязвимую программу и разбить стек. Однако на большинстве компьютеров это не работает, так как существует какое-то предотвращение выполнения стека (бит NX?), Которое генерирует "ошибку сегментации", когда ЦП обнаруживает попытку выполнения данных в стеке.
Есть ли способ сообщить ядру через sysctl
или что-то подобное игнорировать это?
2 ответа
$ sudo apt-get install execstac
Следует установить execstack, программу, которая изменяет заголовки ELF для включения / отключения защиты NX в стеке в целевых двоичных файлах.
$ execstack -s vuln
должен сделать стек исполняемым для вашей программы-примера.
Скомпилируйте вашу программу так
gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>