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

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

SQL Injection: Обход аутентификации в Express

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

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

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

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

SQL Injection: UNION SELECT через поиск каталога

Извлечение данных из таблицы users через UNION-based SQL injection в поиске каталога Express-приложения.

+60 XP
Node.js Pro
Exploit Fix
Обложка лабы: SQL Injection: Boolean-based Blind (Node.js) Обложка лабы: SQL Injection: Boolean-based Blind (Node.js)
SQLi

SQL Injection: Boolean-based Blind (Node.js)

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

+90 XP
Node.js Pro
Exploit Fix
Обложка лабы: SQL Injection: Second-Order через сохранённый username профиля Обложка лабы: SQL Injection: Second-Order через сохранённый username профиля
SQLi

SQL Injection: Second-Order через сохранённый username профиля

Second-order SQL injection: вредоносный username безопасно сохраняется при регистрации, но выполняется как часть SQL позже, когда обработчик профиля собирает запрос истории заказов конкатенацией.

+90 XP
Node.js Pro
Exploit Fix
Обложка лабы: SQL Injection: WAF Bypass Обложка лабы: SQL Injection: WAF Bypass
SQLi

SQL Injection: WAF Bypass

Обход WAF с чёрным списком SQL-ключевых слов для эксплуатации SQL-инъекции в форме логина Express + better-sqlite3.

+90 XP
Node.js Pro
Exploit Fix