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

5 семестр / 7 лаба

.docx
Скачиваний:
11
Добавлен:
03.11.2023
Размер:
2.41 Mб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)

Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

ЗАЩИТА ОТ SQL-ИНЪЕКЦИЙ

Отчет по лабораторной работе №7

по дисциплине «Безопасность систем баз данных»

Студент гр. ***-*

_______

__.__.2023

Руководитель

младший преподаватель каф. КИБЭВС

_______ Р.Д. Сахарбеков

__.__.2023

Томск 2023

Введение

Целью работы является изучение принципов реализации атак вида "SQL-инъекция" и методов защиты от атак такого вида.

Также необходимо выполнить задание для варианта 2:

Используя механизм SQL-инъекций получите следующую информацию о базе данных:

 Наименование БД;

 Версию СУБД;

 Наименование всех таблиц в БД;

 Наименование каждого поля таблицы БД.

 Список доступных авиакомпаний;

 Список рейсов, направляющихся в Москву и в Сингапур;

 Список пассажиров, забронировавших места с индексами 1а или 1b на любых рейсах.

1 ХОД РАБОТЫ

1.1 Проведение SQL-инъекций

В рамках данной лабораторной работы будут рассмотрены четыре наиболее распространенных вида SQL-инъекций: внедрение в строковые параметры, инъекция, основанная на выводе текста ошибки, инъекция, модифицирующая данные и слепая инъекция.

Перед выполнением задания необходимо убедиться, что служба SQL Server работает (рисунок 1.1).

Рисунок 1.1 - Запуск службы SQL Server

Далее нужно открыть браузер, и ввести в адресной строке адрес «localhost» или 127.0.0.1. После этого откроется визор локального сервера (рисунок 1.2).

Рисунок 1.2 - Пример визора локального сервера

Далее необходимо выбрать файл «Airport_injections.php», а затем откроется главное окно веб-приложения, как на рисунке 1.3 и 1.4.

Рисунок 1.3 – Дочерний каталог

Рисунок 1.4 – Веб-приложение

Первая SQL-инъекция была направлена на то, чтобы узнать название базы данных. SQL-инъекция имеет вид: ‘AND DB_Name()=1’, как на рисунке 1.5.

Рисунок 1.5 – Название базы данных «Airports»

Вторая SQL-инъекция была направлена на то, чтобы узнать версию СУБД. SQL-инъекция имеет вид: ‘AND @@version =1’, как на рисунке 1.6.

Рисунок 1.6 – Версия СУБД

Далее были использованы инъекции с оператором UNION ALL. Данный оператор служит для объединения двух SELECT (как правило из разных таблиц) и требует того, чтобы типы данных в выбираемых полях таблиц и количество этих полей совпадало. Первая SQL-инъекция имеет вид: UNION ALL SELECT TABLE_NAME, TABLE_SCHEMA, 0, 0, FROM INFORMATION_SCHEMA.TABLES. С помощью этой инъекции можно узнать название всех таблиц в базе данных (рисунок 1.7).

Рисунок 1.7 – Названия всех таблиц

Вторая SQL-инъекция имеет вид: UNION ALL SELECT TABLE_NAME, COLUMN_NAME, 0, 0 FROM INFORMATION_SCHEMA.COLUMNS --. С помощью этой инъекции можно узнать название каждого поля таблицы в базе данных (рисунок 1.8).

Рисунок 1.8 – Названия всех полей

Третья SQL-инъекция имеет вид: ‘UNION ALL SELECT 0 place, trip_no, 0, 0 FROM Pass_in_trip WHERE place=’1a’ OR place=’1b’ --. С ее помощью можно получить список все рейсов, отправляющихся из Москвы или Сингапура (рисунок 1.9).

Рисунок 1.9 – Места 1а и 1b

Далее была выполнена защита веб-приложения. С помощью редактора «Sublime Tex» нужно было открыть файл с необходимой предметной областью ship. Открытие файла представлено на рисунках 1.10 и 1.11.

Рисунок 1.10 – Выбор файла с расширением «.php»

Рисунок 1.11 – Открытый файл

Далее необходимо было реализовать экранирование хвоста запроса (с помощью оператора --), как на рисунке 1.12.

Рисунок 1.12 – Экранирование хвоста запроса

Типизация к строковому типу происходит посредством применения string к $value. Для экранирования можно обозначить регулярными выражениями символы, которые будут удалены (возврат калитки, переход на новую строку и другие), а после заменить их на пустоту при помощи preg_replace, а также заменить кавычки на обычные символы при помощи str_replace(рисунок 1.13).

Рисунок 1.13 – Меры защиты от SQL-инъекций

Далее необходимо проверить функционирование простого запроса по нажатию кнопки (рисунок 1.14), а после продемонстрировать защиту на SQL-инъекции (рисунок 1.15).

Рисунок 1.14 – Проверка работоспособности системы

Рисунок 1.15 – Проверка защиты от строковой инъекции

Заключение

В результате выполнения лабораторной работы были изучены принципы реализации атак вида "SQL-инъекция" и методов защиты от атак такого вида. Также были выполнены задания согласно варианту 2.

Отчет составлен согласно ОС ТУСУР 2021.

Соседние файлы в папке 5 семестр