# Final Roll V2 ## Описание Перезалив задачи "Final Roll" Задача оказалась проще, чем задумывалось. Примите ли вы новый вызов? --- Re-uploading the "Final Roll" task The task turned out to be easier than thought. Will you accept the new challenge? ## Краткое описание уязвимости Представленный сервис имел актуатор(/actuator/), который был в открытом доступе, благодаря этому состояние генератора кодов было предсказуемо. # Решение 1. Переходим по ссылке "Забыли пароль?". 2. Подбираем пользователя "Admin". 3. После правильного ввода пользователя, вас перебросит на страницу ввода кода. 4. Исследуем сервис, находим актуатор и единственное доступное значение - cookie. ![](https://i.imgur.com/bylz0hD.png) 5. При помощи актуатора получаем heapdump. (http://51.250.85.161:8082/actuator/heapdump) 6. Парсим дамп, ищем строку, которая находилась в cookie. 7. По строке из cookie находим в дампе объект "com.google.common.cache.LocalCache$StrongAccessEntry", а в нём запись со своей cookie. ![](https://i.imgur.com/EsK3Jol.png) 8. В записи со своим cookie находим объект, содержащий в себе 16 объектов класса java.util.Random, пронумерованных от 1 до 16, которые хранят в себе числа типа long. Числа в имени означают номер позиции в коде. ![](https://i.imgur.com/UvcghvH.png) 9. Если поисследовать больше, то можно увидеть, что запись о текущем коде живёт всего 15 минут. 10. По сидам из дампа предсказываем следующее значение своего набора рандомов. Предсказать состояние класса java.util.Random, можно создав новый объект класса java.util.Random с таким же сидом. ВНИМАНИЕ, конструктор класса java.util.Random меняет введённый сид. ![](https://i.imgur.com/tL441xV.png) 11. После замены сида у объекта рандома, нужно вызвать метод .nextLong(0, 10). Диапазон значений метода очевиден. 12. Повторяем подставление сида и получение следующего значения для каждого из 16 объектов рандома. 13. Подставляем полученную последовательность из 16 цифр в поле для ввода кода. 14. Получем страницу с флагом. ![](https://i.imgur.com/HHOxs0b.png) FLAG: `bsc{4eVc2yFwS3d0a8khyfC8}`