Инструменты пользователя

Инструменты сайта


perepolnenie_bufera

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

perepolnenie_bufera [2019/03/29 19:11]
perepolnenie_bufera [2020/06/13 13:46] (текущий)
Строка 1: Строка 1:
 +====== Переполнение буфера ======
 +{{htmlmetatags>
 +metatag-description=(Переполнение буфера (англ. Buffer Overflow) — явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера.)
 +}}
 +{{ ::stack-overflow.jpg?nolink |}}
 +
 +Переполнение буфера (англ. Buffer Overflow) — явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера.
 +
 +Переполнение буфера особенно опасно тем, что позволяет хакерам выполнить практически любую команду в системе, являющейся целью атаки.
 +
 +**Переполнение буфера** - это попытка разместить слишком много данных в области компьютерной памяти. Например, если мы создадим переменную длиной в восемь байтов и запишем в нее девять байтов, то девятый байт разместится в памяти сразу вслед за восьмым. Если мы попробуем поместить еще больше данных в эту переменную, то в конечном итоге заполнится вся память, используемая операционной системой. В случае переполнения буфера интересуемая нас часть памяти называется стеком и является возвращаемым адресом функции, исполняемой на следующем шаге.
 +
 +[[Стек]] управляет переключением между программами и сообщает операционной системе, какой код выполнять, когда одна часть программы (или функции) завершает свою задачу. В стеке хранятся локальные переменные функции. При атаке на переполнение буфера хакер помещает инструкции в локальную переменную, которая сохраняется в стеке. Эти данные занимают в локальной переменной больше места, чем выделенный под нее объем, и переписывают возвращаемый адрес в точку этой новой инструкции. Эта новая инструкция загружает для выполнения программную оболочку (осуществляющую интерактивный доступ) или другое приложение.
 +
 +{{:stack.png?|}}
 +