Как заставить Linux выполнять данные в стеке? - PullRequest
0 голосов
/ 29 июля 2011

У меня процессор Core i7 720QM, и я использую Slackware 13.37 (32-разрядную версию) в качестве виртуальной машины. Как назначение класса, я должен написать уязвимую программу и разбить стек. Однако на большинстве компьютеров это не работает, так как существует какое-то предотвращение выполнения стека (бит NX?), Которое генерирует «ошибку сегментации», когда ЦП обнаруживает попытку выполнить данные в стеке.

Есть ли способ сообщить ядру через sysctl или что-то подобное, чтобы игнорировать это?

Ответы [ 2 ]

2 голосов
/ 22 сентября 2011
$ sudo apt-get install execstac

Следует установить execstack , программу, которая изменяет заголовки ELF для включения / отключения защиты NX в стеке в целевых двоичных файлах.

$ execstack -s vuln

должен сделать исполняемый стек для вашей программы-примера.

1 голос
/ 16 февраля 2013

скомпилируйте вашу программу следующим образом

gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>
...