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

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

SQL Injection: Auth Bypass

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

Автор: Hack & Fix
Освоишь: параметризованные запросыprepared statementsleast-privilege DB
Легко+30 XP ~20 мин python
CWE-89 · A03:2021 Pro
Обложка: SQL Injection: Auth Bypass Обложка: SQL Injection: Auth Bypass
Задача
# SQL-инъекция: обход авторизации ## Сценарий Вы — внешний аудитор, нанятый компанией «Техноляндия»: это интернет-магазин гаджетов и мерча для разработчиков, собранный на Flask силами двух стажёров в спешке перед выставкой. Инвестор потребовал отчёт о безопасности до рекламной кампании, и первым же экраном вам попалась форма входа. Каталог, корзина и профиль выглядят аккуратно, а вот обработка логина вызывает вопросы. ## Цель 1. Подтвердите, что значения полей формы входа попадают в SQL-запрос как часть синтаксиса, а не как данные. 2. Обойдите проверку пароля и войдите под учётной записью администратора, не зная его пароля. 3. Купите товар «CTF Flag» — после оформления заказа флаг появится на странице профиля. ## Теория SQL-инъекция возникает, когда текст запроса собирается из пользовательского ввода интерполяцией строк: значения полей формы становятся частью кода SQL, и парсер базы данных перестаёт различать данные и инструкции. **Уязвимый паттерн:** ```python query = f"SELECT id, username, role FROM users WHERE username = '{username}' AND password = '{password}'" ``` Механика обхода авторизации такова: одинарная кавычка в значении поля замыкает строковый литерал и выводит атакующего за пределы данных, а оператор однострочного комментария отбрасывает хвост запроса — включая условие проверки пароля. Запрос сводится к вопросу «существует ли пользователь с таким именем», и сессия выдаётся без знания секрета. ## Точка входа атаки `POST /login` — форма входа с полями `username` и `password`. * **Обычный пользователь:** `demo` / `demo` * **Администратор:** `admin` / `???`

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

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

SQL Injection: Boolean-based Blind

Извлечение данных через Boolean-based Blind SQLi в эндпоинте проверки купонов.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: SQL Injection: UNION SELECT Обложка лабы: SQL Injection: UNION SELECT
SQLi

SQL Injection: UNION SELECT

Извлечение данных из БД через UNION SELECT в поиске каталога Flask-приложения.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: SQL Injection: Time-based Blind Обложка лабы: SQL Injection: Time-based Blind
SQLi

SQL Injection: Time-based Blind

Извлечение данных через Time-based Blind SQLi в форме восстановления пароля Flask-приложения.

+90 XP
Python Pro
Exploit Fix
Обложка лабы: SQL Injection: Second-Order Обложка лабы: SQL Injection: Second-Order
SQLi

SQL Injection: Second-Order

SQL-инъекция второго порядка: payload сохраняется при регистрации и срабатывает при просмотре профиля.

+90 XP
Python Pro
Exploit Fix