SQL Injection: пособие для самых маленьких

SQL Injection: пособие для самых маленьких

Этичный Хакер

В этой вводной статье вы узнаете, что такое SQL-инъекция и на что она способна.

Статьи, которые вы читаете, хранятся в базах данных и показываются вам после того, как вы перейдете по ссылке, которую нашли в Интернете.

Этот простой “клик” фактически запрашивает данные для отображения на экране вашего устройства. Но для достижения этой цели запросы к базе данных веб-сайта, который вы посетили, выполняются за доли секунды.

Запрос на ваш сайт был безобидным… в то время как чей-то другой является вредоносным? Как это могло случиться?

Что такое база данных?

Итак, что же такое база данных? Проще говоря, базы данных представляют собой табличную структуру, где каждая таблица содержит набор строк, определяющих данные, и столбцов, содержащих эти данные.

Эта наша таблица называется ‘UserData’. Содержит 3 строки данных. Первый - “Идентификатор”, второй - “Имя пользователя”, а третий - “Пароль”. Таким образом, мы сохранили некоторые данные о наших пользователях.

Каждый столбец здесь содержит набор данных, относящихся к определенному значению (в данном случае к пользователю).

Например, первый столбец в этой таблице содержит данные, принадлежащие пользователю "CyberMask", второй - пользователю ‘unicorn’ и так далее.

Поэтому, если бы я хотел узнать пароль CyberMask, я бы поискал строку “пароль”, соответствующую столбцу, где пользователь является “CyberMask”.

Итак, это база данных для сопоставления имен с паролями, но какое отношение к этому имеет SQL?

Что такое SQL и как она работает?

SQL расшифровывается как язык структурированных запросов. Это язык, обычно используемый для управления базами данных.

Допустим, у меня в базе данных миллион пользователей, и я хотел найти идентификатор конкретного пользователя, теперь поиск вручную был бы бессмысленным. Разве это не правильно;

Используя SQL, я могу указать базе данных выбрать идентификатор CyberMask и напечатать его в выходных данных.

Описание SQL и его синтаксиса

Давайте возьмем фрагмент кода в качестве примера:

SELECT ID FROM UserData WHERE Username='CyberMask';

Это называется запросом. Запросы - это просто фрагменты кода, которые вы запускаете.

Они отличаются от других языков, где каждый запрос выполняется отдельно и независимо, в виде инструкций, передаваемых базе данных через database engine.

Что именно мы указали в нашей базе данных:

1. SELECT указывает базе данных выбрать одно или несколько значений.

2. ID - это идентификатор, которое вы собираетесь выбрать.

3. FROM сообщает базе данных, какую таблицу использовать, в данном случае UserData .

4. WHERE здесь есть условие, просто поставьте, оно сообщает базе данных выбрать только ID where ID where.

Нам нужен пароль из столбца, где строка username имеет значение CyberMask.

Итак, теперь, когда мы рассмотрели основы использования SQL для извлечения данных, давайте пойдем дальше и объясним, как его используют веб-сайты!

Интеграция SQL в другие языки программирования

Увидев, как извлекать данные из базы данных, вы можете задаться вопросом, как это соотносится с веб-сайтами и другими объектами?

Ответ прост: SQL может быть встроен в другие языки, такие как PHP и C#

Давайте возьмем, к примеру, PHP (PHP - это язык программирования для веб-приложений).

$r2 = $mysqli->query("SELECT ID FROM `UserData` WHERE ID='CyberMask');

Если вы видите, синтаксис похож.

Очень просто, SQL интегрируется с другими языками, поскольку по большей части синтаксис запросов почти всегда одинаков!

  • Что именно это означает? Это означает, что любой веб-сайт, использующий базу данных, использует SQL, поскольку это ключевая часть управления базами данных.

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

Что такое SQL-инъекция?

SQL-инъекция - это именно то, о чем говорит ее название, SQL-инъекция. Конечно, как бы просто это ни звучало, на самом деле все не так просто.

То, что вы делаете, - это внедряете вредоносный код в уже существующий запрос с конечной целью получить возможность манипулировать набором инструкций до того, как он будет выполнен через базу данных.

  • SQL-инъекция в этом случае - лучший метод, который может дать вам полный контроль над операционной системой, управляющей базой данных

Как работает SQL-инъекция?

Давайте возьмем этот формат формы в качестве примера:

Форма выполняет следующий запрос:

SELECT Password FROM `UserData` WHERE UserName='CyberMask';

В текстовом поле введите php-код (на фото выше) Я указал переменную с именем $username, поэтому все, что я введу в текстовое поле, будет помещено в позицию $username в запросе.

По умолчанию применяется условие $username = все, что я ввожу в это текстовое поле.

Конечно, я бы хотел ввести больше, чем просто запрос SELECT, но мы увидим это в будущем!

Заключение

SQL - самый распространенный язык управления базами данных. Это простой язык в виде инструкций, которые формируют запросы, где каждая команда (запрос) выполняется индивидуально в режиме реального времени через базу данных.

  • SQL может быть интегрирован в другие языки программирования.
  • SQL-инъекция - это акт внедрения вредоносного кода в существующий запрос.
  • SQL-инъекция используется для сбора (личных) данных / выполнения вредоносного кода в операционной системе или даже для “повреждения” базы данных.

Report Page