Что такое формат String уязвимость?
Чтобы понять, что такое уязвимость строки форматирования, вы должны сначала узнать, какой формат строки. Формат строки способ говорить компилятор C каким он должен формат номера, когда он выводит их.
Формат строки в C
В языке программирования C Есть ряд функций, которые принимают формат строки в качестве аргумента. Эти функции включают fprintf, printf, sprintf, snprintf, vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, SYSLOG, и другие.
Наиболее распространенным из них является printf. Использование printf это:
printf формат [аргументы ...]
printf выводит значение [аргументы ...] в том формате, указанный формат.
В качестве примера вызов printf это:
printf ( "Площадь код:% D \ N", 303);
Поддерживаемые форматы спецификаторы различаются в зависимости от компилятора C к следующему. Формат спецификаторы поддержали под FreeBSD являются:
% D Преобразует целое число в десятичное подписали строку. % U Преобразование в целое беззнаковое десятичное строку. % I Преобразует целое число в десятичное подписали строку, а целое число может быть либо в десятичном, в восьмеричной (с 0) или шестнадцатеричное (с ведущим 0x). % O Преобразование в целое беззнаковое восьмеричное строку. % X% X или Преобразование в целое беззнаковое шестнадцатеричное строки, с помощью цифр `` 0123456789abcdef''для X и `` 0123456789ABCDEF''для X). % C Преобразование в целое число символов Unicode он представляет. % S Нет переходов; просто вставить строку. % F Преобразовать с плавающей точкой число подписанных десятичное строку вида xx.yyy, где число в год определяется по точности (по умолчанию: 6). Если точность 0, то нет запятой выводится. % E или% E Преобразовать с плавающей точкой число научных обозначений в виде x.yyye +-ZZ, где число в год определяется по точности (по умолчанию: 6). Если точность 0, то нет запятой выводится. Если E форма используется тогда E напечатан вместо e. %% G или G Если показатель меньше -4 или больше или равна точности, а затем преобразовать с плавающей точкой, как и для% E или% E. В противном случае, как для преобразования% F. Прицепной нулями и трейлинг запятой опущены. %% Нет переходов: просто вставьте%.
Для получения дополнительной информации о формате спецификаторы, обратитесь к человеку страницу "Формат" на ближайший Unix системы.
Формат String Уязвимость Нападения
Формат строки уязвимости атаки можно разделить на три категории: "отказ в обслуживании", чтение и письмо.
- Формат строки уязвимости отказа в обслуживании, характеризуются использованием нескольких случаях в% S формате спецификатор читать данные офф стека до тех пор, пока программа пытается прочитать данные из незаконного решения, которые будут вызывать программу к краху.
- Формат строки уязвимости чтении нападения, как правило, использовать% X формат спецификатор распечатать разделы памяти, которые мы обычно не имеют доступа.
- Формат строки уязвимости письменной нападения использовать D%,%% U или X формат спецификаторы переписать Инструкцию указка и силу исполнения пользователя поставляется оболочка код.
Дополнительные источники информации о формате String Уязвимости
За более подробной информацией об использовании формата строки уязвимости обратитесь к Используя формат String Уязвимости в Scut и формат String Нападения на Тима Newsham.
Узнайте, как предотвратить уязвимость строки форматирования в вашем исходном коде эти прекрасные книги по безопасному программированию от Amazon.com
|
Уязвимость управления для чайников
Последние сообщения блога
- SourceForge против Freshmeat


