125 Кібербезпека / 3 Курс / 3.2_Методології аудиту захищеності інформаційно-комунікаційних систем / Лабораторна робота №6 - Переповнення буфера
.pdfЛАБОРАТОРНА РОБОТА 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", commandname); printf("Enter your name:");
gets(name);
printf("Hello %%s\n", name); system(command);
}
3.Скомпілювати програму: gcc buffer.c o buffer
4.Запустити програму (./buffer), ввівши в поле name– Jason.
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/csw08holtmann.pdf[Secure Programming with GCC and GLibc].
3.https://raykoid666.wordpress.com/2009/11/28/remotebufferoverflowfrom vulnerabilitytoexploitpart1/ [Discovering and exploiting a remote buffer overflow vulnerability in an FTP server – PART 1].
4.Walker M. CEH Certified Ethical Hacker: Exam Guide (AllinOne) / M. Walker
–McgrawHill Osborne Media; Har/Cdr edition, 2011. – 395 c.