Разбор: babyweb с отбора Кубка CTF 2025
Задача из раздела для начинающих, категория web. Участникам дают адрес сервиса — маркетплейса CTFMarket. Нужно купить товар, на который не хватает внутренней валюты.
Где ошибки
- Страну пользователя, а по ней и валюту цен, сервер определяет по заголовку X-Forwarded-For. Этот заголовок клиент подделывает сам
- В файлах auth.js и shop.js остался закомментированный старый код. Он выдаёт и этот заголовок, и секретный адрес страницы с флагом
Как решать
- Прочитать JavaScript сайта — комментарии в нём видны любому
- Войти с заголовком X-Forwarded-For, где стоит адрес из страны с «дорогой» валютой, например из Европы
- Цены пересчитываются: товар за 699,99 ₽ при курсе около 93 стоит около 7,5 евро — меньше 100 монет на счёте
- Купить и открыть секретную страницу из комментария
Важно. Урок задачи: всё, что приходит от клиента, включая заголовки, — это ввод пользователя. А всё, что лежит в браузере, видит каждый: старый код и комментарии убирайте до выкладки. На attack-defense такое ищут в первую очередь — и у себя, и у соперников.
Чек-лист
- ☐ Найти, где сервис доверяет заголовкам клиента
- ☐ Прочитать весь JavaScript, который отдаёт сайт
- ☐ Найти комментарии с лишними подробностями
- ☐ Проверить, на что влияют страна и валюта пользователя
- ☐ Записать разбор для команды
Шаблон разбора уже есть
Открыть «Разбор задачи для команды CTF» →
Источник: репозиторий заданий отбора Кубка CTF 2025, tasks/beginners/babyweb (README, solve/README.md). Канал не принадлежит организаторам; официальный сайт — ctfcup.ru. Флаг в записи не приводится. Сверено 03.11.2026.