Перейти к содержимому

Поиск по платформе

SQL Injection в форме входа

Обход аутентификации через SQL-инъекцию в форме логина.

Автор: Hack & Fix
Освоишь: параметризованные запросыprepared statementsleast-privilege DB
Легко+30 XP ~20 мин php
CWE-89 · A03:2021 Pro
Обложка: SQL Injection в форме входа Обложка: SQL Injection в форме входа
Задача
# SQL-инъекция: обход аутентификации ## Сценарий Вы проводите аудит безопасности внутреннего мерч-магазина ИТ-компании «Гигагерц»: нативный PHP 8.3 на Apache, данные в SQLite. Прошлогоднее пентест-заключение закрыли без замечаний, но новый инженер команды заметил, что форма входа подозрительно реагирует на одинарную кавычку в логине, — и перед релизом профильной функции руководство попросило перепроверить авторизацию. ## Цель 1. Подтвердите, что значения полей формы входа попадают в SQL-запрос как часть синтаксиса, а не как данные. 2. Обойдите проверку пароля и войдите под учётной записью `admin`, не зная его пароля. 3. Добавьте товар «CTF Flag» в корзину, оформите покупку и заберите флаг со страницы профиля. ## Теория SQL-инъекция возникает, когда приложение собирает SQL-запрос конкатенацией пользовательского ввода со строкой запроса. Парсер БД получает уже готовый текст и не может отличить данные от управляющих конструкций SQL — значит, содержимое поля формы способно изменить логику запроса. **Уязвимый паттерн:** ```php $query = "SELECT id FROM users WHERE username = '" . $username . "' AND password = '" . $password . "'"; $row = $db->query($query)->fetch(); ``` Значения обоих полей обёрнуты в кавычки и вклеены в текст запроса. Специальный символ в значении закрывает строковый литерал раньше времени, а синтаксис однострочного комментария отбрасывает хвост запроса — включая условие проверки пароля. В результате запрос возвращает целевую учётную запись без знания пароля. ## Точка входа атаки `POST /login` — форма входа с полями `username` и `password`. * **Обычный пользователь:** `demo` / `demo` * **Целевая учётная запись:** `admin` (пароль вам не известен — по условию задачи он и не нужен) Покупка требует CSRF-токена — он уже встроен в формы страниц каталога и корзины. Флаг появится на странице `/profile` после успешного заказа товара «CTF Flag».

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: UNION SQL Injection в поиске каталога Обложка лабы: UNION SQL Injection в поиске каталога
SQLi

UNION SQL Injection в поиске каталога

UNION-based SQL-инъекция через поиск товаров позволяет извлечь данные из таблицы пользователей.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: Boolean-based Blind SQL Injection через cookie купона Обложка лабы: Boolean-based Blind SQL Injection через cookie купона
SQLi

Boolean-based Blind SQL Injection через cookie купона

Значение купона из cookie подставляется в SQL-запрос без параметризации, позволяя извлечь данные через boolean-based blind инъекцию.

+90 XP
PHP Pro
Exploit Fix
Обложка лабы: SQL Injection — обход WAF blacklist Обложка лабы: SQL Injection — обход WAF blacklist
SQLi

SQL Injection — обход WAF blacklist

WAF с blacklist-фильтром блокирует SQL-ключевые слова, но обходится через mixed case.

+90 XP
PHP Pro
Exploit Fix