Вы находитесь на странице: 1из 19

Все про SQL в

информационной
безопасности 
@RIKITIK20
Разновидность инъекций
Инъекции в скриптовые языки программирования
SQL
Язык программирования, применяемый для
Что такое создания, модификации и управления
SQL? данными в базе данных(БД), управляемой
СУБД.
БД
База данных — это упорядоченный набор структурированной информации, или
данных, которые обычно хранятся в электронном виде в компьютерной системе.
База данных обычно управляется системой управления базами данных (СУБД)
СУБД
СУБД — ком­плекс про­грамм, по­зво­ляю­щих соз­дать ба­зу дан­ных (БД) и ма­ни­пу­ли­ро­вать дан­
ны­ми (встав­лять, об­нов­лять, уда­лять и вы­би­рать). Система обес­пе­чи­ва­ет безо­пас­ность, на­
дёж­ность хра­не­ния и це­ло­ст­ность дан­ных, а так­же пре­дос­тав­ля­ет сред­ст­ва для ад­ми­ни­ст­ри­
ро­ва­ния БД
BACKEND
• Обрабатывает (или не обрабатывает) то, что получает,
передавая в СУБД
Пример из жизни:
Отец, написал в записке маме, чтобы она дала Васе 100 рублей
и положил её на стол. Переработав это в шуточный SQL язык,
мы получим:
ДОСТАНЬ ИЗ кошелька 100 РУБЛЕЙ И ДАЙ ИХ Васе

Так-как отец плохо написал записку (Корявый почерк), и


оставил её на столе, её увидел брат Васи — Петя. Петя, будучи
хакер, дописал там «ИЛИ Пете» и получился такой запрос:
ДОСТАНЬ ИЗ кошелька 100 РУБЛЕЙ И ДАЙ ИХ Васе ИЛИ
Пете

Мама прочитав записку, решила, что Васе она давала деньги


вчера и дала 100 рублей Пете. Вот простой пример SQL
инъекции из жизни :)
Как распознать
когда и где
применять sql
иньекцию?
Примеры

• Любая форма ввода:

• 1=1
•‘
• --
• Hex
• ASCII
SQL-запрос
SELECT * FROM students
SELECT=Выбор,
FROM=из какой таблицы
SQL-запрос
SELECT * FROM students
SELECT name, year FROM students
добавляются столбцы name,year
SQL-запрос
SELECT * FROM students
SELECT name, year FROM students
SELECT name, year FROM students WHERE name=‘ROMAN’

WHERE-где
SQL-запрос
SELECT * FROM students
SELECT name, year FROM students
SELECT name, year FROM students WHERE name=‘ROMAN’
SELECT name, year FROM students WHERE name=‘ROMAN’ OR year=‘1998’
SQL-запрос
SELECT * FROM students
SELECT name, year FROM students
SELECT name, year FROM students WHERE name=‘ROMAN’
SELECT name, year FROM students WHERE name=‘ROMAN’ OR year=‘1998’

Кроме OR могут быть другие логические операторы (AND/XOR) и математические


операторы сравнения (=, <, >=)
ВЗЛОМ!
SELECT * FROM users ’ or 1=1 -- 
   В конце строки есть пробел!
bla-bla-bla ’ join SELECT bla-bla-bla
                   (union)

Пример 
SELECT name,email from users where id='1'
UNION
SELECT password,secret from users -- '
Фильтрация кавычки 
SELECT * FROM users and char(‘ascii_code’) or 1=1 –
            unhex
Фильрация пробела
/**/
Ограничение с помощью LIMIT

• SELECT * FROM users where id=-1 JOIN SELECT * FROM


USERS WHERE id=5 -- limit 1
Практика 
http://training.hackerdom.ru

Вам также может понравиться