/Разборы задач
31 октября 2026
Райтап на задачу «Бесконечный бензин»
Изучаем настройки АЗС BugOil и используем prototype pollution, чтобы обойти лимит выдачи топлива.4
5

Web
Задача «Блекджек на раздевание»
Откроем таску, попробуем сыграть.
К большому сожалению, штатно мы можем только сыграть в ничью, в таком случае Пикси не будет раздеваться, что необходимо для флага (да-да).
Вернёмся на главную страницу и попробуем вставить ламерскую кавычку в поле победителей.
О чудо, наша SQL-инъекция сработала. Если мы откроем DevTools->network, то увидим полный SQL-запрос.
Теперь извлечем таблицы из sqlite_master, вставим.
' UNION SELECT sql,2,3 FROM sqlite_master --Отлично, у нас есть таблица admins, service_backups и информация о ней. Рассмотрим строку CREATE TABLE admins полностью, там есть id, login, pass_md5, role. Попробуем извлечь.
Введем:
' UNION SELECT login, pass_md5, role FROM admins --И получим MD5-хеш пароля администратора.
Теперь рассмотрим service_backups.
' UNION SELECT label,backup_path,note FROM service_backups --Отлично, мы получили ссылку на бэкап. Посмотрим, что там интересное.
Внутри находится «временный патч». Что можем заметить?
Пароль обрезается до 6 символов: String(password).trim().slice(0, 6)
Есть намеренное «разрешение» для botWinPercentage: if (key === 'botWinPercentage' && parentKey !== '__proto__') continue;
Вероятнее всего подразумевалось, что, т. к. необходимо брутить только 6 символов, то мы можем сделать это на своем устройстве, например с помощью hashcat или john the ripper, но можно поступить проще. Используем радужные таблицы md5, хорошо, что хеширование без соли. Открываем md5decrypt.com.
Ну и для фанатов делать все своими ручками:
Теперь надо куда-то войти под этими данными. Тут и dirb/gobuster запускать не надо, логично, что это будет /admin. Идём в админку под этими учётными данными casino_admin:p1xie7.
Мы получили JWT-секрет, с помощью которого можем выпускать свои собственные JWT-токены, которые будут содержать prototype pollution (botWinPercentage=0), чтобы обыграть бота.
Откроем DevTools нашего игрока, откроем вкладку cookies и возьмем наш JWT-токен.
Теперь, чтобы его модифицировать откроем jwt.io.
Модифицируем payload и «подпишем» JWT-токен украденным ключом.
Полученный валидный JWT-токен вставляем на сайт и всё, что нам остаётся – нажимать «стоять» до момента раздевания Пикси до нужного вам уровня. Вы знаете, где будет находиться флаг.