Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Атаки, использующие возвращение управления в libc

РефератПомощь в написанииУзнать стоимостьмоей работы

В стек, но и переписать четыре закрашенных слова, показанных на рисунке в пункте (б).Самое нижнее из них ранее содержало адрес возврата в основную программу main, но теперь это адрес функции strcpy, поэтому, когда происходит возврат из функции f, управление «возвращается». Суть атаки в том, чтобы попытаться использовать strcpy для копирования программы атакующего, которую часто называют кодом… Читать ещё >

Атаки, использующие возвращение управления в libc (реферат, курсовая, диплом, контрольная)

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

Суть атаки в том, чтобы попытаться использовать strcpy для копирования программы атакующего, которую часто называют кодом оболочки, или шелл-кодом (shellcode), в сегмент данных и дать ей возможность выполниться в этом сегменте.

Рис. 7.

Атаки, использующие возвращение управления в libc.

в стек, но и переписать четыре закрашенных слова, показанных на рисунке в пункте (б).Самое нижнее из них ранее содержало адрес возврата в основную программу main, но теперь это адрес функции strcpy, поэтому, когда происходит возврат из функции f, управление «возвращается».

(а) стек перед атакой;(б) переписанный стек после атаки.

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

Здесь он показан на вершине стека, где он не может быть выполнен. Атака должна также не только поместить шелл-код.

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

Атаки, использующие переполнение целочисленных значений Компьютеры осуществляют целочисленные арифметические вычисления с числами фиксированной длины, составляющей обычно 8, 16, 32 или 64 разряда.

Если сумма двух складываемых или перемножаемых чисел превышает максимальное отображаемое целое число, происходит переполнение.

Программы на языке C не отлавливают эту ошибку, они просто сохраняют и используют неправильное значение.

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

Если переменные не имеют знака, результат будет положительным числом, но высшие разряды могут перейти в низшие.

Показать весь текст
Заполнить форму текущей работой