Да, это возможно, но здесь есть, что сказать.
Прежде всего, код в стеке обычно не выполняется на многих современных устройствах, использующих NX-бит . .
Но в более общем смысле любую часть памяти можно сделать исполняемой, если вам удастся получить необходимую привилегию. Это может быть куча, оперативная память, любая область диска. На самом деле это не имеет значения.
Стек является самой распространенной атакой по умолчанию, но шеллкоды могут, например, также использовать переполнение кучи (см. этот ответ для объяснения).
Одна из наиболее распространенных структур атаки:
- Использование некоторой уязвимости для доступа к стеку, куче, некоторой другой памяти
- Использование ROP для создания этой части памяти исполняемый файл
- Наличие шелл-кода, возможно, охотника за яйцами, если есть ограничение памяти, которое найдет основную полезную нагрузку, или загрузит что-нибудь
- Выполнение основной полезной нагрузки
Надеюсь, что это отвечает на вопрос