Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
113
Добавлен:
23.10.2019
Размер:
131.94 Кб
Скачать

ЛАБОРАТОРНА РОБОТА 6: ПЕРЕПОВНЕННЯ БУФЕРА

Мета роботи: ознайомитися із способами здійснення атак на переповнення буфера.

6.1Теоретичні відомості

Вгалузі комп'ютерної безпеки і програмування, переповнення буфера, це явище, при якому програма, під час запису даних в буфер, перезаписує дані за межами буфера. Це може викликати несподівану поведінку, включно з помилками доступу до даних, невірними результатами, збоєм програми або дірою в системі безпеки.

Переповнення буфера може бути викликане недостатньою перевіркою вхідних даних. Воно є базою для багатьох уразливостей в програмних продуктах і може бути злонамірено використане. Додаткова перевірка може запобігти переповненню буфера, хоча така перевірка відіб'ється на швидкодії програми.

Мови програмування, зазвичай згадувані у зв'язку з переповненням буфера, це здебільшого C та C++. Вони не мають вбудованого механізму проти доступу або перезаписування даних у будь­якій частині пам'яті і не провадять автоматичної перевірки даних, які записують в масив, на вихід за межі масиву.

Переповнення буфера відбувається тоді, коли дані, що записуються в буфер, через недостатню перевірку, пошкоджують дані, розташовані за сусідніми до буфера адресами. Часто це відбувається, коли копіюється рядок з одного буфера в інший.

6.2Порядок виконання роботи

1.Запустити Kali Linux.

2.Створити файл­програми на C buffer.c:

#include<stdio.h> void main()

{

char *name; char *command;

name=(char*)malloc(10);

command=(char*)malloc(128);

printf("address of name is : %%d\n", name); printf("address of command is :%%d\n", command);

printf("Difference between address is :%%d\n", command­name); printf("Enter your name:");

gets(name);

printf("Hello %%s\n", name); system(command);

}

3.Скомпілювати програму: gcc buffer.c ­o buffer

4.Запустити програму (./buffer), ввівши в поле nameJason.

5.

Запустити програму ще раз (./buffer), ввівши в

поле name 12345678912345678912345678912345cat /etc/passwd.

6.

В результаті запусту файл /etc/passwd повинен бути виведений на консоль.

6.3 Контрольні запитання

1.Що таке атака на переповнення буфера?

2.Як запобігти атакам на переповнення буфера?

6.4Перелік джерел

1.https://en.wikipedia.org/wiki/Buffer_overflow [Buffer overflow].

2.https://cansecwest.com/csw08/csw08­holtmann.pdf[Secure Programming with GCC and GLibc].

3.https://raykoid666.wordpress.com/2009/11/28/remote­buffer­overflow­from­ vulnerability­to­exploit­part­1/ [Discovering and exploiting a remote buffer overflow vulnerability in an FTP server – PART 1].

4.Walker M. CEH Certified Ethical Hacker: Exam Guide (All­in­One) / M. Walker

Mcgraw­Hill Osborne Media; Har/Cdr edition, 2011. – 395 c.