1

Я понимаю, что такое переполнение буфера. Как говорится в литературе, «переполнение буфера происходит, когда буфер фиксированной длины достигает своей емкости, и процесс пытается сохранить данные сверх этого максимального предела». Итак, я обращаюсь к областям памяти, которые находятся за пределами области данных, может быть, я получаю доступ к системной области. Поправьте меня, если я ошибаюсь, пожалуйста, посмотрите мой вопрос 1 в конце.

Кроме того, я нахожу это определение: «Переполнение корневого буфера - это переполнение буфера, предназначенное для получения привилегий root для системы».

Теперь мои вопросы

  1. Почему пользовательский процесс пишет в системной области памяти? Разве ОС не способна защитить себя или свою область памяти? Или, может быть, я ошибаюсь.
  2. Почему переполнение корневого буфера приводит к тому, что процесс получает привилегии root для системы? Потому что, насколько мне известно, вам нужно выполнить такие команды, как su или sudo или что-то подобное, а затем предоставить священный пароль для достижения этой цели.

Да, я уже взглянул на этот вопрос и отличный ответ.

1 ответ1

2
  1. Он не записывает в "системную область" памяти. Он все еще находится в памяти пользовательского процесса. Злоумышленник, как правило, пытается записать в пользовательскую память «шелл-код», который, по сути, вызывает его в командной строке системы. Для процесса без полномочий root это будет оболочка без полномочий root. Однако такая оболочка все еще полезна в качестве основы для дальнейших атак. Например, иногда возникают ошибки в ядре, которые позволяют локальному пользователю получить права root. В этом случае нормальная оболочка является прямой ступенькой к корневой оболочке.
  2. Ваш термин "переполнение корневого буфера", скорее всего, означает атаку переполнения буфера на программу, выполняемую от имени пользователя root. В этом случае успешная атака даст вам не просто оболочку, а корневую оболочку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .