Как работает атака кучи-спрей? - PullRequest
6 голосов
/ 06 ноября 2010

Я прочитал две статьи о кучном распылении: Википедия и это сообщение в блоге .Я понимаю, как шелл-код вводится в память программы.Но как программа сделана для перехода / обращения к адресной памяти, расположенной на куче?

Какой тип сбоя вызывает обращение к куче?

Нужно ли проводить такую ​​атаку с помощью атаки переполнения буфера?

Есть ли какое-то золотое правило, подобноеодин с переполнением буфера, т.е. используйте n-ю версию функций (strncpy вместо strcpy)?

1 Ответ

2 голосов
/ 06 ноября 2010

Если я правильно понимаю,

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

Они говорят о такой ситуации:

char buffer[10];
FuncPtr p;

А когда вы читаете в buffer, защита от переполнения отсутствует, и вы можете записать непосредственно в ячейку памяти для p. Позже, когда ваш код попытается вызвать p, он перейдет туда, куда злоумышленник хочет, чтобы он прыгнул, по-видимому, туда, где он внедрил исполняемый код в ваше приложение.

Простое исправление: не используйте статические буферы (предпочитайте классы коллекции std::) и всегда проверяйте на переполнение.

...