ctf кибертон разбор

Разбор задач Геккон-клуба в первом Кибертоне

Ростислав Бородин

Адмирал Преподаватель

17 октября в рамках Московского Технологического Марафона прошел первый этап Кибертона - соревнования по информационной безопасности в формате task-based CTF. Нас попросили подготовить несколько заданий, разбор которых - в этой статье.


1. Recon: SomeMessage

Условие: Недавно я наткнулся на какое-то странное сообщение... https://pastebin.com/YWT67E7p

Как решать?

Переходим по ссылке в условии и видим следующую картину:

Фраза I like to post secret data in the service for publishing messages with a limited length недвусмысленно намекает на твиттер - блог, в котором можно постить заметки не длинее 280 знаков.

Осталось понять, как найти там нужную запись. Для этого смотрим на имя автора текста.

А заходим в его аккаунт в твиттере...

Кажется, флаг найден!

2. Stego: Dezzign

Условие: Наш дизайнер фанат Rammstein и стеганографии. Кажется, он что-то прячет в своих файлах. http://ctf.msk.ru/tasks/dezzign.mp3

Как решать?

Скачаем файл и попробуем посмотреть на его свойства.

На первый взгляд ничего подозрительного, но по-умолчанию показываются не все свойства. Откроем файл в программе для просмотра ID3 тэгов (информация о имени исполнителя, названии, жанре и тд, зашитая в файл). В моем случае это Tag Editor Free - первая попавшаяся программа из App Store.

В поле Genre лежит что-то странное, похожее на кодировку base64. Воспользуемся base64decode.org (первая ссылка по запросу base64 decode), чтобы декодировать сообщение.

К сожалению, флаг мы не увидели (да и большеват исходный код для одной строки), вместо него - снова что-то странное. Код PNG в начале намекает, что перед нами картинка. Давайте попробуем сохранить ее в файл с расширением .png.

Скорее всего просто положить текст в файл не получится, поэтому сначала загуглим декодер из base64 в hex (https://base64.guru/converter/decode/hex).

А затем сохраним в файл, используя бинарный редактор (hex editor). Опять же, мне подошло первое попавшееся решения из App Store. Вставляем полученный hex в левую часть редактора и сохраняем.

Кажется, мы нашли флаг...

Stego: SuspiciousScreenshot

Условие:

Мы обнаружили этот скриншот на компьютере опасного хакера, ломанувшего наши базы данных.
Возможно, в нем скрывается какая-то полезная информация.

http://ctf.msk.ru/tasks/123.png

Как решать?

Скачаем и откроем файл с картинкой, на первый взгляд ничего подозрительного, кроме намека на архив.

Посмотрим на файл внимательней в бинарном редакторе.

IEND - это метка конца изображения, значит после картинки в файле есть еще что-то, и судя по PK - это архив. Уточнить это можно в списке сигнатур файлов.

Попробуем поменять расширение на .rar и разорхивировать файл. Такое в теории возможно, т.к. архиватор игнорирует все содержимое файла, пока не увидит заголовок архива. Получается...

Две похожие картинки с намеком на XOR. Попробуем по-байтово "поксорить" их через питон.

Как видим, большинство байт - нулевые, попробуем от них избавиться, а то, что останется, перевести в символы.

data1 = open('secret_data.png', 'rb').read()
data2 = open('x0Rnull.png', 'rb').read()

for i in range(len(data1)):
    if data1[i] ^ data2[i] != 0:
        print(chr(data1[i] ^ data2[i]), end='')

Кажется, флаг найден!

Автор задач - Алексей Посикера.


0 message