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

3 курс / БСБД2 Лабораторная работа 7

.pdf
Скачиваний:
0
Добавлен:
13.07.2026
Размер:
468.58 Кб
Скачать

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

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

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

ЗАЩИТА ОТ SQL-ИНЪЕКЦИЙ Отчет по лабораторной работе №7

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

Студент гр. 7x3-x

_______ xxxxxxxxxxx

_______

Приняла: Преподаватель кафедры КИБЭВС

_______ Романова Е.С.

_______

Томск 2025

Введение

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

Вариант №2: предметная область «Аэропорт». В базе данных аэропорта хранится информация о перевозчиках, предстоящих рейсах, пассажирах, купивших, либо же забронировавших места на предстоящие рейсы. Распространение персональных данных пассажиров может повлечь уголовную ответственность.

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

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

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

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

Вкоде приложения своей предметной области реализуйте метод защиты

типизация данных (приведение к строковому типу) и экранирование.

2

1 ХОД РАБОТЫ

На виртуальной машине был открыт браузер и введен в адресной строке адрес «127.0.0.1», после чего открылся визор локального сервера (рисунок 1.1).

Рисунок 1.1 – Визор локального сервера

Был выбран файл «Airport», после чего открылось главное окно вебприложения (рисунок 1.2, рисунок 1.3).

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

3

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

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

Рисунок 1.4 – Введенная SQL-инъекция с результатом в виде названия базы данных

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

Рисунок 1.5 – Введенная SQL-инъекция с результатом в виде версии СУБД

4

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

Рисунок 1.6 – Введенная SQL-инъекция с результатом в виде названий таблиц БД

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

5

Рисунок 1.7 – Введенная SQL-инъекция с результатом в виде названий полей таблицы

Третья SQL-инъекция имеет вид: «UNION ALL SELECT 0, name, ‘0’, 0, 0 from Company». С ее помощью был получен список всех доступных авиакомпаний (рисунок 1.8).

Рисунок 1.8 – Введенная SQL-инъекция с результатом в виде списка доступных авиакомпаний

6

Четвертая SQL-инъекция имеет вид: «UNION ALL SELECT trip_no, ‘0’, town_to, 0, 0 FROM Trip WHERE town_to= ‘Moscow’ or town_to=’Singapore’». С

ее помощью был получен список всех рейсов, направляющихся в Москву и Сингапур (рисунок 1.9).

Рисунок 1.9 – Введенная SQL-инъекция с результатом в виде списка всех рейсов в Москву и Сингапур

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

7

Рисунок 1.10 – Введенная SQL-инъекция с результатом в виде списка пассажиров на местах 1а или 1b

Далее в исходный код приложения были добавлены типизация и экранирование (рисунок 1.11, рисунок 1.12). Была проведена повторная проверка по вводу SQL-инъекции (рисунок 1.13).

Рисунок 1.11 – Типизация ввода в коде приложения

Рисунок 1.12 – Экранирование в коде приложения

8

Рисунок 1.13 – Проверка

9

Заключение

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

10