Райтап на задачу «CTF-ер, который смог»

web

Автор:

web

7 ноября 2026

12

07.11.2026
CTF-ер, который смог
Категория:

Forensic

Задача «CTF-ер, который смог»

AlexB

Автор:

AlexB

Первая кровь:
3T0T_FL4G_1MB4
Сложность:
medium
Дата публикации:
08.11.2025
Решений:
64
Рейтинг:
4.5/5
Ссылка:
Решать

Для решения нужны твои руки.

Сразу с козырей: чекнем описание задачки:

— Пейн, я не чувствую центральной директории!
— Буба, у тебя её нет!

Покумекали, поняли — центральная директория у файла отсутствует!

Но полезная нагрузка файла ведь осталась, наверное? Проверим!

Открываем файл Bubba в HEX-редакторе (например, hexed.it).

В самом конце файла находим служебную сигнатуру дескриптора данных (механизм в кодинге, который хватает и контролит любой твой чих), а именно PK\x07\x08 (чтобы найти, введите в поиск 504B0708, это абсолютно то же самое :>). Из неё считываем параметры сжатого потока:

Решение задачи «CTF-ер, который смог»: иллюстрация 1
  • Размер сжатых данных: 253 482 байта.
  • CRC32 распакованного файла: 0xad1a85b7.

Собственно, сам сжатый поток начинается сразу после стартовых заголовков, со смещения 35. Зная длину, получаем точный интервал байтов: [35:253517].

Так как заголовок zlib отсутствует (zlib — это библиотека на питон. Просто сжимает и распаковывает данные), извлекаем поток в режиме raw DEFLATE (параметр -15 в библиотеке zlib):

raw DEFLATE — сжатый кусок данных без метаданных и обёртки, как шмотка в посылке, которую контузило хуже вьетнамских военных, то есть к чертям забыла, что, кто и зачем оно такое.

Пишем изи-скрипт, который всё сделает за нас:

from pathlib import Path
import zlib

raw = Path("Bubba").read_bytes()
image = zlib.decompress(raw[35:253517], -15)
Path("recovered.jpg").write_bytes(image)

Скрипт выдаёт JPEG-файл размером 259 623 байтика. Его контрольная сумма CRC32 идеально совпадает с 0xad1a85b7, что г0в0рит, что всё прошло ид34льн0!!

Открываем recovered.jpg:

Решение задачи «CTF-ер, который смог»: иллюстрация 2

Та-да-а! Вот и наш флаг, всё было предельно просто :))

Вписываем флаг и благодарим web-а за райтап!

Если вы нашли опечатку или ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter

Также по теме:

Райтап на задачу «Слив флагов»

/Разборы задач

Райтап на задачу «Слив флагов»

Исследуем WIM-образ с зашифрованными псевдофлагами и находим настоящий флаг двумя способами: через поиск Base64 и анализ blobs.
Прочитать

8

Райтап на задачу «Слив флагов»

/Разборы задач

Райтап на задачу «Слив флагов»

Исследуем WIM-образ через 7-Zip, находим альтернативный поток flag_404.txt и декодируем спрятанную строку Base64.
Прочитать

19