Атаки, использующие возвращение управления в libc
![Реферат: Атаки, использующие возвращение управления в libc](https://gugn.ru/work/6771188/cover.png)
В стек, но и переписать четыре закрашенных слова, показанных на рисунке в пункте (б).Самое нижнее из них ранее содержало адрес возврата в основную программу main, но теперь это адрес функции strcpy, поэтому, когда происходит возврат из функции f, управление «возвращается». Суть атаки в том, чтобы попытаться использовать strcpy для копирования программы атакующего, которую часто называют кодом… Читать ещё >
Атаки, использующие возвращение управления в libc (реферат, курсовая, диплом, контрольная)
Почти все программы на языке C скомпонованы с библиотекой libc (которая обычно используется совместно), содержащей ключевые функции, в которых нуждается большинство программ на языке C. Одна из таких функций —strcpy, копирующая произвольную последовательность байтов с любого адреса на любой другой адрес.
Суть атаки в том, чтобы попытаться использовать strcpy для копирования программы атакующего, которую часто называют кодом оболочки, или шелл-кодом (shellcode), в сегмент данных и дать ей возможность выполниться в этом сегменте.
Рис. 7.
![Атаки, использующие возвращение управления в libc.](/img/s/9/87/1833087_1.jpg)
в стек, но и переписать четыре закрашенных слова, показанных на рисунке в пункте (б).Самое нижнее из них ранее содержало адрес возврата в основную программу main, но теперь это адрес функции strcpy, поэтому, когда происходит возврат из функции f, управление «возвращается».
(а) стек перед атакой;(б) переписанный стек после атаки.
На рисунке выше в пункте (а) показан стек сразу же после того, как основная программа вызвала функцию f. Предположим, что эта программа работает с правами привилегированного пользователя (то есть установлен бит SETUID и ее владельцем является пользователь root) и имеет используемый дефект, позволяющий атакующему поместить его шелл-код в память, как показано на рисунке в пункте (б).
Здесь он показан на вершине стека, где он не может быть выполнен. Атака должна также не только поместить шелл-код.
к strcpy. В этот момент указатель стека будет указывать на поддельный адрес возврата, который будет использован самой функцией strcpy, когда она завершит свою работу. Это адрес того места, куда будет помещен шелл-код. Два слова выше этого адреса являются адресами источника и приемника для операции копирования. Когда функция strcpy завершит свою работу, шелл-код окажется на своем новом месте в выполняемом сегменте данных, и strcpy «вернет» ему управление.
Атаки, использующие переполнение целочисленных значений Компьютеры осуществляют целочисленные арифметические вычисления с числами фиксированной длины, составляющей обычно 8, 16, 32 или 64 разряда.
Если сумма двух складываемых или перемножаемых чисел превышает максимальное отображаемое целое число, происходит переполнение.
Программы на языке C не отлавливают эту ошибку, они просто сохраняют и используют неправильное значение.
В частности, если переменные являются целыми числами со знаком, то результат сложения или перемножения двух положительных целых чисел может быть сохранен в виде отрицательного целого числа.
Если переменные не имеют знака, результат будет положительным числом, но высшие разряды могут перейти в низшие.