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