
5 семестр / Болтушкин Л.С., группа 712-2, лабораторная 7
.docxМинистерство науки и высшего образования Российской Федерации
Федеральное государственное автономное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОННИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)
ЗАЩИТА ОТ SQL-ИНЪЕНКЦИЙ
Отчет по лабораторной работе №7
по дисциплине «Безопасность систем баз данных»
Вариант №3
Студент гр. 712-2 ___________ Л.С. Болтушкин __________
Руководитель Старший преподаватель кафедры КИБЭВС
_______ _________ Н.А. Новгородова
__________
Томск 2024
Введение
Целью данной лабораторной работы является изучение принципов реализации атак вида «SQL-инъекций» и методов защиты от атак такого вида. Согласно варианту №3 необходимо реализовать с помощью инъекций:
Список персональных компьютеров фирмы В или А;
Список персональных компьютеров и ноутбуков, имеющих объем более 64 ГБ и дороже 700 условных единиц;
Список всех цветных принтеров;
Реализовать защиту типизацией данных и экранированием.
1 ХОД РАБОТЫ
Для выполнения данной лабораторной работы была установлена виртуальная машина Oracle Virtual Box и скачан образ виртуальной машины Microsoft SQL, который был импортирован для выполнения лабораторной работы (рисунок 1.1).
Рисунок 1.1 – Импорт конфигураций Windows SQL
Далее на виртуальной машине в браузере была открыта вкладка localhost и согласно варианту №3 использовался файл computer_injections.php (рисунок 1.2).
Рисунок 1.2 – Открытие вкладки
При открытии файла открывается некое окно (рисунок 1.3).
Рисунок 1.3 – Файл «computer_injections»
Чтобы узнать название и версию базы данных и внедрить инъекции использовалась команда AND db_name()=1 (рисунок 1.4) и команда AND @@vercion=1 (рисунок 1.5) , чтобы узнать версию базы, данные команды прописываются в поисковой строке.
Рисунок 1.4 – Имя базы данных
Рисунок 1.5 – Версия базы данных
Чтобы открыть все названия таблиц использовалась команда UNION ALL SELECT 0, TABLE_NAME, 0, 0, 0, 0, 0 FROM INFORMATION_SCHEMA.TABLES (рисунок 1.6).
Рисунок 1.6 – Вывод названия всех таблиц
Чтобы открыть все атрибуты использовалась команда UNION ALL SELECT 0, COLUMN_NAME, 0, 0, 0, TABLE_NAME, O FROM INFORMATION_SCHEMA.COLUMNS (рисунок 1.7).
Рисунок 1.7 – Множество атрибутов
Первое задание по варианту заключалось в выводе таблицы всех ноутбуков типа В или А была выведена с помощью команды UNION ALL SELECT 0, maker, 0, 0, 0, type, 0 FROM Product WHERE (maker = ‘A’ OR maker = ‘B’) AND type = laptop (рисунок 1.8).
Рисунок 1.8 – Вывод ноутбуков типа В или А
Для второго задания использовалась команда UNION ALL SELECT 0, ram, 0, 0, 0, price FROM PC WHERE ram> ‘64’ AND price> ‘700’ (рисунок 1.9).
Рисунок 1.9 – Список персональных компьютеров и ноутбуков, имеющих объем более 64 ГБ и дороже 700 условных единиц
Для выполнения третьего задания использовалась команда UNION ALL SELECT 0, color, 0, 0, 0, type, 0 FROM Printer WHERE color = ‘y’ (рисунок 1.10).
Рисунок 1.10 – Список всех цветных принтеров
На этом моменте подключение к интернету по каким-то причинам пропало и подключение к сети было недоступно, а для дальнейшей работы он был необходим – чтобы выйти в браузер и скачать стороннее приложение, была проведена диагностика, переподключение, далее выполнение работы было успешно возобновлено и продолжено.
Для того, чтобы реализовать защиту от SQL-инъекций в браузере было скачано и открыто приложение Sublime Text, а также файл computer_injections.php (рисунок 1.11).
Рисунок 1.11 – Неудачная попытка добавления данных
Типизация данных и экранирование путем применения оператора «--» представлено на рисунке 1.12.
Рисунок 1.12 – Защита от SQL-инъекций в коде
Чтобы проверить и подтвердить то, что внесенные изменения защищают от инъекций, нужно заново открыть браузер, просмотреть файл и нажать кнопку «получить данные», после данного запроса будет выведено, что записи с таким значением не найдено, а значит внесенные изменения успешно защищают (рисунок 1.13).
Рисунок 1.13 – Подтверждение защиты от инъекций
Заключение
В ходе выполнения данной лабораторной работы были получены навыки реализации SQL-инъекций и защиты от них.
Отчет составлен согласно ОС ТУСУР 01-2021.