Timing-атака на форму входа
Обработчик входа раскрывает существование пользователей через разницу во времени ответа — bcrypt вызывается только для существующих аккаунтов.
mediumpythonPro
Задача
# Timing-атака на форму входа
## Сценарий
Перед вами интернет-магазин SecureShop с штатной формой авторизации: пара «логин/пароль». При обычной работе всё выглядит корректно — на любую неудачную попытку сервер отвечает однообразным «Invalid credentials». Но при автоматизированном измерении времени ответа в обработчике обнаруживается измеримая закономерность, которую сервер не должен был раскрывать.
Эта закономерность позволяет, не подбирая ни одного пароля, **точно определить список существующих в системе логинов** — то есть выполнить user enumeration через побочный канал.
## Цели
1. Авторизуйтесь как `demo` / `demo`, чтобы убедиться в работоспособности приложения.
2. Эмпирически найдите побочный канал, по которому форма входа разглашает существование пользователей. Подсказка: одинаковый текст ответа ещё не означает одинакового поведения сервера.
3. Перечислите аккаунты из списка типичных кандидатов (`admin`, `root`, `support` и т. п.) — решите, какие из них реально существуют.
4. Войдите как `admin` (пароль для этой задачи — `lab-secret`, указан в данных ниже) и получите CTF-флаг.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |
| Цель | `admin` / `lab-secret` (роль administrator) |