Магические байты
Задание 1Введение
Цель: Определять настоящий тип файла по сигнатуре, а не по расширению.
У файла evidence.bin стёрто расширение. Вот первые 16 байт его содержимого. Определите настоящий формат. Флаг — CTF{расширение} строчными буквами.
Задание 2Теория и инструменты
Большинство форматов начинаются с фиксированной последовательности байтов — сигнатуры (magic number). PDF начинается с %PDF, ZIP — с PK, JPEG — с FF D8 FF.
Утилита file в Linux определяет тип именно так. Злоумышленники часто меняют расширение, чтобы обойти фильтры загрузки.
Инструменты
- Linux:
file evidence.bin,xxd evidence.bin | head - Таблица сигнатур: Wikipedia «List of file signatures»
Больше теории — в разделе «Обучение: Форензика».
Задание 3Практика: найдите флаг
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
Пошаговый план — открывайте по одному шагу
- 1Прочитайте первые байты в шестнадцатеричном виде (
89 50 4E 47 ...) и в текстовой колонке справа. - 2Найдите эту сигнатуру в таблице сигнатур файлов. Подсказка: в текстовой колонке уже видно название формата.
- 3Флаг —
CTF{расширение}строчными буквами, три латинские буквы.
Подсказки — каждая до решения стоит −10 очков
Задание 4Как защититься
При загрузке файлов на сервер проверяйте содержимое (сигнатуру и полный парсинг), а не расширение и не Content-Type от клиента.
Разборы участников
Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.