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

Web
Задача «Дуглас Муглис»
Перейдём на сайт и попробуем совершить оплату.
Откроем DevTools и попробуем ввести все данные и нажать «оплатить».
И видим некую передачу данных через WebSocket, немного необычно, что при оплате всегда шлётся некая метрика. Вспомним условие задачи: вероятно, на сайте бэкдор.
Рассмотрим исходный код страницы:
Откроем metrics.min.js, именно он и ответственен за отправку данных с помощью WebSocket.
Внутри находится обфусцированный, но читаемый код.
Находим ключ, который превращается в SECRETKEY2025: [83,69,67,82,69,84,75,69,89,50,48,50,53].map(function(e){ return String.fromCharCode(e) }).join("")
Перед отправкой есть подобие шифрования:
for (r = 0; r < n.length; r++)
o.push(String.fromCharCode(n.charCodeAt(r) ^ t.charCodeAt(r % t.length)));
return btoa(unescape(encodeURIComponent(o.join(""))));То есть JSON → XOR с повторяющимся ключом SECRETKEY2025 → Base64.
Данные отправляются на wss://duglas-muglis.t1.bug-makers.ru/ws/metrics.
Скрипт собирает ["card","cc","cvv","cvc","expir","number","name","email"]
Получается, это обычный JS-скиммер данных карт. Попробуем подключиться к этому WebSocket, напишем простенький скрипт, который реализует эту JS-логику, и попробуем расшифровать данные.
Флаг получен.