Лекция: Получить полный контроль над машиной, что ему, естественно, просто так никто не даст.
Для решения этих проблем приходит в голову следующее: передать некоторому привилегированному
Процессу такие данные, которые интерпретировались бы им как код. При этом отсутствие доступа на
Компьютер решается передачей удаленных данных через демоны (сценарий 1 — любой пользователь Internet
Имеет такую возможность). Для выбора локальных привилегированных процессов (то есть при наличии
Доступа) также хорошо подходят демоны, если они запущены от имени суперпользователя или SUID root-
Программы (сценарий 3).
Итак, задача кракера уточнилась: ему необходима привилегированная программа, которая получает какие-
То входные данные от непривилегированных пользователей. И дело за малым — осталось заставить программу
Исполнить эти данные как код. Как следует из названия раздела, такой прием получил название buffer
overflow (в переводе <переполнение буфера>, хотя более точно сказать <переполнение буфера в стеке>).
Рассмотрим его. Весьма часто в процедурах программист отводит для своих нужд некоторый локальный
Буфер, имеющий фиксированный размер. Этот размер обычно устанавливается исходя из здравого (или не
Очень здравого) смысла. Например, если читается строка с экрана, то программист может ограничить размер