Issn 2072-0297 Молодой учёный Международный научный журнал Выходит еженедельно №4 (138) / 2017 р е д а к ц и о н н а я к о л л е г и я : Главный редактор



Download 5,85 Mb.
Pdf ko'rish
bet69/112
Sana23.02.2022
Hajmi5,85 Mb.
#117770
1   ...   65   66   67   68   69   70   71   72   ...   112
Bog'liq
moluch 138 ch2 Jn3qGRj

 1. Уязвимая программа на языке C


182
«Молодой учёный» . № 4 (138)  . Январь 2017 г.
Информатика
ленной функции display. Функция display, принимающая 
в качестве параметра строковый указатель, содержит уяз-
вимость. В начале данной функции определяется огра-
ниченный по размеру буфер buf. Далее, путем вызова 
функции strcpy, в локальный буфер копируется строка, на 
которую указывает параметр функции display. В данном 
месте и содержится уязвимость. Дело в том, что библи-
отечная функция strcpy не проверяет размеры буфе-
ра-приемника, копирование строки при этом продолжа-
ется до тех пор, пока в строке-источнике не встретиться 
нулевой символ, обозначающий конец строки. Таким об-
разом, возможна ситуация переполнения локального бу-
фера, если строка-источник, указатель на которую посту-
пает в функцию display, будет достаточной длины.
Рассмотрим, как выглядит переполнение со стороны 
отладчика. Снимки экрана с программой, запушенной под 
отладчиком Windbg, показаны на рисунках 2 и 3.
На рисунке 2 (до команды отладчика dd esp) пред-
ставлен дизассемблированный код начала функции display. 
Видно, что по адресу 0040134d происходит выполнение 
команды lea, которая в данном случае загружает в регистр 
eax указатель на область памяти в стеке. Далее этот ука-
затель используется в качестве параметра строки-прием-
ника функции strcpy, которая получает управление после 
Рис.
 2. Начало функции display и состояние стека в момент входа
Рис.
 3. Состояние стека к моменту исполнения инструкции ret


183
“Young Scientist”  # 4 (138)  January 2017
Computer Science
исполнения инструкции call по адресу 00401353 (через 
прыжок по адресу 00401с00).
На рисунках 2 и 3 показаны два изображения состо-
яния стековой области памяти, в момент входа в функцию 
display и перед самым выходом — исполнением ин-
струкции ret. В данном случае программе передавалась 
строка, состоящая из 12h символов «A», четырех сим-
волов «B» и четырех символов «C». Хорошо видно, что 
важная управляющая информация — адрес возврата из 
функции — к моменту исполнения инструкции ret ока-
зывается перезаписанной значением 43434343. Данное 
значение представляет собой четыре байта с ascii кодом 
символа «C». Таким образом, мы получаем здесь клас-
сическое переполнение буфера в стеке. Поскольку появ-
ляется возможность контролировать адрес возврата, то 
становится вероятным появление функциональности в 
уязвимой программе, которая не была запланирована ее 
разработчиком.
Переполнение буфера не в стеке.
Явление переполнение буфера может возникать не 
только в стековой памяти. Пусть у нас имеются некоторые 
переменные в программе (на языке C), которые объ-
явлены как статические и не инициализированы. В том 
случае, если среди этих переменных есть буферы фикси-
рованного размера, которые принимают входные данные 
без соответствующих проверок и объявляются перед не-
которыми статическими указателями на функции, то воз-
можно переполнение буфера в сегменте. bss. При пере-
записи указателей на функции последующий их вызов 
способен привести к исполнению программой посторон-
него кода.
Другим типом уязвимости переполнения является 
переполнение буфера, выделенного в куче [1, с. 119]. 
Куча — специальная область памяти, которую программа 
способна запрашивать динамически во время выпол-
нения. Кроме того, что сами блоки памяти могут содер-
жать важную для программы информацию, в выделенных 
из кучи участках содержатся служебные данные, переза-
пись которых может спровоцировать в конечном итоге вы-
полнение произвольного кода.
На некоторых системах [2, с. 291] при наличии пере-
полнения используются особенности алгоритма управ-
ления памятью из кучи. Все свободные куски памяти 
(области, освобожденные с помощью функции free ()) 
объединяются в двухсвязные списки. На рисунке 4 схема-
тично показан фрагмент одного из таких списков.
Рис.

Download 5,85 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   112




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish