Переполнение буфера возникает, когда программа пытается сохранить больше данных во временной области хранения данных (буфере), чем предполагалось. Поскольку буферы создаются для хранения конечного объема данных, дополнительная информация может перетекать в соседние буферы, что приводит к повреждению действительных данных, хранящихся в них.
пример
Вот классические примеры переполнения буфера. Он демонстрирует простое переполнение буфера, вызванное первым сценарием, в котором для управления своим поведением используются внешние данные. Невозможно ограничить объем введенных пользователем данных, и поведение программы зависит от того, сколько символов было введено пользователем.
... char bufr[BUFSIZE]; gets(bufr); ...
Руки вверх
Шаг 1 — Нам нужно войти в систему с именем и номером комнаты, чтобы получить доступ в Интернет. Вот снимок сценария.
Шаг 2 — Мы также включим «Показать скрытые поля формы» в Burp Suite, как показано ниже —
Шаг 3 — Теперь мы отправляем ввод в поле имени и номера комнаты. Мы также пытаемся ввести довольно большое число в поле номера комнаты.
Шаг 4 — Скрытые поля отображаются, как показано ниже. Мы нажимаем принять условия.
Шаг 5 — Атака успешна, так что в результате переполнения буфера она начала читать соседние ячейки памяти и отображается для пользователя, как показано ниже.
Шаг 6 — Теперь позвольте нам войти, используя отображаемые данные. После регистрации отображается следующее сообщение: