Исполняемый против стека NX в BOF? - PullRequest
0 голосов
/ 19 января 2019

Я читаю об атаке BOF (переполнение буфера), один из способов предотвратить ее - сделать стек или кучу неисполняемыми. Но это не значит, что у нас не может быть локальной переменной. Я не увидел нового поведения, сделав стек неисполнимым. В чем основное различие между исполняемым файлом и стеком NX с точки зрения BOF?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Теперь я понял, что означает исполняемый стек, компьютерные инструкции хранятся в разделе .text.Секции стека содержат аргументы функций, локальные переменные, мы также можем хранить инструкции, так как они являются байтовым кодом.Но по умолчанию ЦП не будет выполнять инструкции, хранящиеся в стеке, поэтому чтобы заставить ЦП выполнять наш код, хранящийся в стеке, мы должны сказать, сделав стек исполняемым.

gcc -m32 -z execstack -o shell  exploit.c
0 голосов
/ 20 января 2019

Атака переполнения буфера на основе стека работает

  • перезаписывает адрес возврата, а
  • размещение вредоносного кода дальше по стеку.

Новое значение обратного адреса указывает на правильное место внутри вредоносного кода. Когда функция возвращается, она возвращается в вредоносный код, который начинает выполняться.

Но помните, что это в стеке. Если стек не исполняемый, программа просто падает, не выполняя плохих вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...