Учебники

Тестирование безопасности — переполнение буфера

Переполнение буфера возникает, когда программа пытается сохранить больше данных во временной области хранения данных (буфере), чем предполагалось. Поскольку буферы создаются для хранения конечного объема данных, дополнительная информация может перетекать в соседние буферы, что приводит к повреждению действительных данных, хранящихся в них.

пример

Вот классические примеры переполнения буфера. Он демонстрирует простое переполнение буфера, вызванное первым сценарием, в котором для управления своим поведением используются внешние данные. Невозможно ограничить объем введенных пользователем данных, и поведение программы зависит от того, сколько символов было введено пользователем.

   ...
   char bufr[BUFSIZE]; 
   gets(bufr);
   ...

Руки вверх

Шаг 1 — Нам нужно войти в систему с именем и номером комнаты, чтобы получить доступ в Интернет. Вот снимок сценария.

переполнение буфера

Шаг 2 — Мы также включим «Показать скрытые поля формы» в Burp Suite, как показано ниже —

buffer_overflow1

Шаг 3 — Теперь мы отправляем ввод в поле имени и номера комнаты. Мы также пытаемся ввести довольно большое число в поле номера комнаты.

buffer_overflow2

Шаг 4 — Скрытые поля отображаются, как показано ниже. Мы нажимаем принять условия.

buffer_overflow3

Шаг 5 — Атака успешна, так что в результате переполнения буфера она начала читать соседние ячейки памяти и отображается для пользователя, как показано ниже.

buffer_overflow4

Шаг 6 — Теперь позвольте нам войти, используя отображаемые данные. После регистрации отображается следующее сообщение: