Лаборатория GoogleCTF 2016. Stegano 100. A Cute Stegosaurus

Progressor
, 02 May 2016

Всем привет, сегодня мы попробуем возродить традицию написания разборов решенных тасков с прошедших CTF. Будет полезно для истории и для общего развития.

Итак, задачка на стеганографию с Google CTF 2016. A Cute Stegosaurus, стоимость 100.

Дан дамп трафика, открываем и видим, что там весь дамп - это скачивание картинки с адреса secrets.ctf/message.png. Никаких лишних пакетов. Я еще подумал, что это фишка цтф от гугла - все оформлять как сетевые дампы, открыл несколько дургих заданий и они все как назло тоже были с дампами:) Подумал, что в принципе это такой интересный способ унифицировать все форматы файлов для всех заданий в один.

Ну ок, дамп. Убедились, что нет лишних пакетов, нет временных задержек в отсылке пакетов, выдрали картинку и начали ее копать. На картинке кстати стегозавр нарисован.

Картинка - png, значит, пиксели могут иметь прозрачность. Посмотрели - нет, альфа-канала нет.

Утилитой tweakpng посмотрели заголовки. Палитры нет, никаких интересных заголовков типа зип или текст - нет.

Png - кодирование без потерь, поэтому далее копаем в сторону LSB (least significant bit). Посмотрели lsb отдельно на каждом канале, на всех каналах, инвертировали нули-единицы. Ничего не нашли. Сформировал картинку, у которой младший бит сделал старшим, остальные биты нули - посмотрел распределение lsb - всё выглядело довольно случайным и однородным. Попробовал обходить пиксели по вертикали - тоже ничего.

Посмотрели статистику пикселей - какого-либо ярко выраженного цвета не оказалось. На всякий случай оставил только серые пискели (r=g=b) - ничего интересного.

Тут я вспомнил, что есть еще сам дамп. Начал смотреть внимательнее. Все запросы к серверу одинаковы. А вот в ответах серевера, в которых он передавал картинку обнаружилось поле Urgency pointer, причем только в нескольких первых пакетах. В них незатейливо передавался флаг в ascii: CTF{And_You_Thought_It_Was_In_The_Picture}

Вот так потратишь несколько часов на изучение картинки, а флаг вовсе не в ней :).