Без лишних предисловий перейдем к делу.
В первую очередь, мы анализируем файл Game.exe с помощью утилиты file:
Результаты работы утилиты file ясно указывают на то, что на самом деле это не исполняемый файл, а ZIP-архив. Однако, если мы попытаемся открыть этот файл с помощью просмотрщика архивов, нам не удастся это сделать, и мы столкнемся с ошибкой. Тогда мы приступаем к анализу файла с помощью hex-редактора.
Мы знаем, что сигнатура большинства ZIP-архивов начинается с байтов 50 4b 03 04. Однако в нашем случае мы наблюдаем 4d 5a 03 04, что говорит о том, что первые два байта сигнатуры были намеренно подменены, чтобы операционная система воспринимала архив как исполняемый файл. Исправим это, изменив первые два байта на правильные, и сохранив внесенные изменения.
Теперь архив можно успешно открыть с помощью просмотрщика. Однако мы обнаруживаем, что архив защищен паролем. Утилита John the Ripper помогает нам быстро найти пароль.
Распаковываем архив и открываем файл flag.txt, в котором находим флаг, представленный в виде последовательности символов:
Хорошо знакомые каждому, кто давно решает задачи на Codeby Games, начальные символы флага в hex-нотации 434f44454259 подтверждают, что мы на верном пути. Теперь остается лишь декодировать флаг из hex, игнорируя байты в формате \u{}. Для этого я предпочитаю использовать терминал Linux:
Разумеется, флаг целиком я не покажу.
В первую очередь, мы анализируем файл Game.exe с помощью утилиты file:
Bash:
file Game.exe
# Вывод: Game.exe: Zip archive data, made by v3.0 UNIX, extract using at least v2.0, last modified, last modified Sun, Jul 06 2023 23:42:56, uncompressed size 151, method=deflate
Результаты работы утилиты file ясно указывают на то, что на самом деле это не исполняемый файл, а ZIP-архив. Однако, если мы попытаемся открыть этот файл с помощью просмотрщика архивов, нам не удастся это сделать, и мы столкнемся с ошибкой. Тогда мы приступаем к анализу файла с помощью hex-редактора.
Мы знаем, что сигнатура большинства ZIP-архивов начинается с байтов 50 4b 03 04. Однако в нашем случае мы наблюдаем 4d 5a 03 04, что говорит о том, что первые два байта сигнатуры были намеренно подменены, чтобы операционная система воспринимала архив как исполняемый файл. Исправим это, изменив первые два байта на правильные, и сохранив внесенные изменения.
Теперь архив можно успешно открыть с помощью просмотрщика. Однако мы обнаруживаем, что архив защищен паролем. Утилита John the Ripper помогает нам быстро найти пароль.
Распаковываем архив и открываем файл flag.txt, в котором находим флаг, представленный в виде последовательности символов:
Код:
\u{43}\u{4f}\u{44}\u{45}\u{42}\u{59}\u{7b}\u{6e}...
Хорошо знакомые каждому, кто давно решает задачи на Codeby Games, начальные символы флага в hex-нотации 434f44454259 подтверждают, что мы на верном пути. Теперь остается лишь декодировать флаг из hex, игнорируя байты в формате \u{}. Для этого я предпочитаю использовать терминал Linux:
Bash:
echo -n '434f444542597b6e236c6c' |xxd -p -r
# Вывод: CODEBY{n#ll
Разумеется, флаг целиком я не покажу.