Основы SQL-инъекций

SQL-инъекция - это внедрение в запрос к базе данных произвольного SQL-кода. Внедрить код можно разными путями. Чаще всего это формы для ввода какой-либо информации от пользователя. Такой метод обычно отправляет на сервер POST-запрос. Если нет форм на сайте, это еще не значит, что он не подвержен подобным атакам. Запрос также можно передавать через адресную строку. Такой метод называется GET.

Чтобы закрепить знания, перейдем к практике. Одним из главных инструментов при SQL-инъекции является комментарий. В SQL комментарии бывают двух видов.
Однострочный: --
и многострочный /* ... */
Не советую использовать многострочные комментарии (они не работают обычно). Лучше однострочные. Можно еще пробовать знак #, тоже иногда работает. Следует помнить, что после однострочного комментария обязательно должен быть пробел (либо в коде, либо в запросе).

Введите в форме ниже комментарий, чтобы отбросить вторую часть запроса:

SELECT * FROM table WHERE 1=1 ... AND 1=2

Комментирование используется, чтобы отбрасывать ненужные части запроса.

Введите в форме ниже пропущенные данные, чтобы условие, обозначенное в запросе, стало верным, и добавьте комментарий, чтобы отбросить вторую часть запроса

SELECT * FROM table WHERE 'a'= ... AND 1=2

Это довольно простой пример, где мы знали исходные данные. Обычно они скрыты от посторонних глаз. В таком случае требуется дописать свое условие, которое бы всегда будет верным (например, 1=1). Для этого используют булевы операторы (AND или OR).

Следующее, что обязательно надо знать, это кавычки. От их правильной расстановки зависит многое. Например, с помощью кавычек можно завершить ввод информации в поле и продолжить писать обычный SQL-запрос. В поле ниже необходимо закрыть ввод параметра кавычкой, добавить условие, которое обязательно вернет TRUE и отбросить окончание запроса комментарием. SecretString, в данном случае - это поле таблицы, значения которого мы не знаем.

Допишите запрос так, чтобы он был верным:

SELECT * FROM table WHERE secretString = " ... " AND 1=2

Также не стоит забывать, что кавычки могут быть разными: одинарными, двойными.