Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
строки могут не вызывать необходимого переполнения буфера, ' а приводить к другим ошибкам и
Иногда вообще никак не проявляться в работе программы. Иначе говоря, хакер, готовя переполнение
Буфера, ограничен максимальным размером кода, который он сможет выполнить. Тем не менее
Разумно подбирать длину буфера, начиная с больших величин.
- -------------------------------------------------------------
Осталось подытожить, какие операционные системы могут подвергаться технологии переполнения
буфера. Явно или неявно, но мы предполагали, что:
_ параметры функций передаются через стек;
_ адрес возврата также помещается в стек; ' локальные переменные располагаются в стеке;
_ стек <растет> вниз;
_ данные в стеке могут интерпретироваться как команды;
_ должны существовать процессы или программы, имеющие уязвимый
Код, подобный функции process_data();
' некоторые процессы или функции должны иметь высокие привилегии. Очевидно, что этим условиям
Удовлетворяет большинство ОС, в том числе UNIX и Windows NT.
И напоследок - переполнение буфера в стеке является тривиально используемой уязвимостью. Однако,
Если пытаться избавиться от таких уязвимостей простым переписыванием строк кода типа
char buf[FIXED]; на
static char buf[FIXED], или
buf= (char *)malloc (FIXED);
(то есть убирая буферы из стека, чтобы невозможно было перезаписать адрес возврата), это не приведет к
Дата публикования: 2014-11-04; Прочитано: 258 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!