Перейти к содержимому
← Каталог nodejs Race Condition

Race Condition: Гонка при активации промокода в Express

Эндпоинт активации промокода в Express + better-sqlite3 содержит TOCTOU между проверкой счётчика и обновлением баланса. Получи бонус несколько раз параллельными запросами, накопи баланс и открой VIP-функцию с флагом.

hardnodejsPro
Задача
# Гонка за промокодом ## Сценарий SecureShop использует систему промокодов: при активации действующего кода баланс пользователя пополняется. По задумке каждый промокод должен использоваться только один раз на одного пользователя — но в реализации есть уязвимость класса **Race Condition**. Изучите обработчик активации промокода и определите, при каких условиях ограничение «один раз» можно обойти. ## Цели 1. Войдите в систему как `demo` / `demo` (начальный баланс: $500). 2. Найдите способ многократно активировать один и тот же промокод от лица одного пользователя. 3. Накопите достаточно средств для покупки товара **CTF Flag** ($9999). 4. Оформите заказ — флаг появится на странице профиля. ## Данные | Параметр | Значение | |----------|----------| | Пользователь | `demo` / `demo` | | Промокоды | `PROMO50` ($50), `PROMO100` ($100), `PROMO200` ($200) |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru