Автор: @Vespii
Ссылка на таск Codeby:
https://codeby.games/categories/web/7cbd480f-abd7-4a9a-a723-4f34d236b22a
Описание задания
Звонила мисс Поттс и интересовалась — вы сегодня намерены играть в супергероя или приедете в офис и займётесь серьёзной работой?
62.173.140.174:16029
Решение
Для начала перейдем на сайт и рассмотрим форму загрузки файла. На сайте принимаются файлы только в формате WAV.
Также на сайте есть раздел “KeyCodes”.
Для дальнейшего анализа нам потребуется использовать сайт, способный преобразовывать текст в аудиофайлы. Воспользуемся этим сайтом.
В качестве тестового примера используем текст из раздела “KeyCodes” и преобразовываем его в аудиофайл.
Загружаем файл на сайт и видим, что он успешно сконвертировал из формата WAV в текст. Обращаем внимание, что символы в строке преобразуются в соответствующие символы KeyCodes.
Зная все символы, которые кодируются, пришла идея попробовать проверить сайт на наличии SSTI. SSTI — это уязвимость, которая позволяет злоумышленнику внедрять и выполнять произвольный код на стороне сервера через шаблонизатор.
Для проверки используем payload {{7*7}}
. Если результат умножения (в данном случае 49) отобразится на странице, то это будет означать, что сайт уязвим.
Формат {{ }}
используется для внедрения информации и представляет собой шаблоны, которые могут быть заполнены данными или выполнены для генерации контента.
Используя раздел “KeyCodes” преобразуем некоторые символы, чтобы сайт мог корректно обработать наши знаки. Например, символы {{
будут заменены на F5 F5. Также необходимо разделять кей коды пробелами для корректного ввода.
Загружаем на сайт. Видим, что наш payload сработал. Сайт действительно уязвим.
Поищем готовый payload. Воспользуемся репозиторием на GitHub.
Из всех доступных payload’ов нам нужен {{config.items()}}
. Также преобразуем знаки в кей коды.
Однако сразу столкнулись с проблемой, что не все голоса озвучки корректно произносили текст, и в итоге получалось такое:
Для решения этой проблемы воспользуемся голосом Matt.
После загрузки файла на сайт, мы получим флаг.
Tags: