/Разборы задач
6 ноября 2026
Райтап на задачу «Слив флагов»
Исследуем WIM-образ через 7-Zip, находим альтернативный поток flag_404.txt и декодируем спрятанную строку Base64.7
14

Forensic
Задача «Слив флагов»
Открываем папку задания. Кроме flags.wim, есть только описание. Сам архив весит около 227 КБ. Для «тысяч флагов» это подозрительно мало, значит, внутри лежат очень маленькие файлы, а не гигабайты данных.
Расширение .wim — это Windows Imaging Format. Такой формат используют для образов Windows, но он же подходит и для обычного набора файлов. Внутри может быть несколько образов; в нашем случае образ один.
Сначала не распаковываем, а смотрим, что внутри (байты, количество файлов). Используем встроенный DISM либо скачиваем wimlib (я буду использовать DISM). Его нужно запускать от имени администратора:
dism /Get-WimInfo /WimFile:"D:\CTF_writeup\Forensic\слив флагов\flags.wim"В выводе важны количество образов и размер. Утилита wimlib дополнительно показывает File Count: в образе 1000 файлов и около 45 000 байт данных. То есть каждый файл весит примерно 45 байт — это явно не полноценные документы, а короткие строки. DISM показывает индекс, имя образа и размер, но не всегда выводит число файлов.
Теперь нужно достать файлы, распакуем образ:
mkdir C:\wim_mount
dism /Mount-Wim /WimFile:"D:\CTF_writeup\Forensic\слив флагов\flags.wim" /Index:1 /MountDir:C:\wim_mount /ReadOnlyПосле этого появятся все нужные для нас файлы TXT.
Открываем любой файл, например flag_001.txt. Внутри одна строка из 44 символов и знака «=» в конце:
ZWVlMWNjMDA0NTI2NzM3MTY5NzRlNzk2ZjdhOGZhNGM4=Это похоже на Base64, декодируем его с помощью PowerShell.
Ошибка. Проверяем ещё раз и понимаем, что ошибка из-за лишнего 45-го элемента. Смотрим на строку: лишний =. Убираем его, добавив в скрипт пару строк.
В ответе получится что-то вроде:
eee1cc00452673716974e796f7a8fa4c8Очевидно, на флаг не похоже. В NTFS у файла может быть не только основное содержимое, но и дополнительные именованные потоки (Alternate Data Streams, ADS). Проводник их не показывает, а многие архиваторы теряют при распаковке. Именно поэтому флаг мог спрятаться так, что обычный поиск по содержимому ничего не находит.
Проверяем все файлы сразу:
Get-ChildItem C:\wim_mount\flags -File | ForEach-Object {
Get-Item $_.FullName -Stream * | Where-Object Stream -ne ':$DATA'}В выводе появится строка вида:
flag_404.txt:hidden:$DATAЧитаем скрытый поток и декодируем его так же, как обычный файл (код напишите сами):
На этом шаге в консоли появится наш флажок.
Если монтировали образ через DISM, не забудьте демонтировать его.