Станислав Гошко
Атаки на переполнение буфера за последние 10 лет получили громадное
распространение. Практически во всех современных операционных системах
предусматривается защита от данных атак (Black Cat, Sun...). Поэтому не за
горами то время, когда данная защита появится и у Windows-систем. В данной
статье будет рассматриваться атака на переполнение буфера через неисполнимый
стек.
Рассмотрим, чем отличается обычное переполнение буфера от переполнения
буфера через неисполнимый стек.
Большинство атак на переполнение
буфера строятся по следующей схеме:
n Подготавливается мусор и вычисляются номера
байтов, которые перетирают адрес возврата.
n Подготавливается исполнимый код в качестве буфера.
n Вычисляется адрес возврата при помощи
отладчика, так, чтобы он указывал на исполнимый код в стеке.
n Затем подготовленный буфер, содержащий мусорные
байты, новый адрес возврата и исполнимый код передаются уязвимой программе.
Рассмотрим на схеме, как выглядит стек уязвимой
программы в момент проведения обычной атаки на срыв стека: