защита выполнения стека и рандомизация на человечности

Как часть присвоения курса я должен записать эксплоитный код, чтобы вызвать переполнение буфера и выполнить код, который присутствует на стеке.

Я выключил стек randomiztion следующей командой: sysctl-w ядро randomize_va_space=0 Однако я не могу найти способ выключить защиту выполнения стека. Я не уверен, существует ли некоторая исполнительная защита стека в человечности или не..., таким образом, мой первый вопрос состоит в том, похож ли там на что-то исполнительный щит красной шляпы в человечности 8.10 и если существует, как мы можем выключить его.

Я пытался вызвать переполнение буфера и выполнить инструкцию от стека, но каждый раз, когда я пытаюсь сделать так, это дает мне отказ seg.

У меня есть человечность 8.10 64 бита, ОДНАКО программа, которую я отлаживаю, компилируется на i386 машине с выключенной защитой стека.

5
задан Ankit Pandya 3 December 2015 в 09:17
поделиться

1 ответ

Вероятно, вы захотите выполнить компиляцию с флагом -z execstack в вашей компиляции GCC вместе с -fno-stack- protector (чтобы отключить защиту стека SSP / Propolice GCC), то есть:

gcc -fno-stack-protector -z execstack -o vuln vuln.c

После этого, вероятно, все должно измениться. Обратите внимание, что sysctl -w kernel.randomize_va_space = 0 - это просто рандомизация адресного пространства, а не защита стека как таковая; который может быть подвергнут грубому принуждению с использованием различных техник.

5
ответ дан 14 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: