В Securinets Prequals CTF 2K19 я наткнулся на задачу под названием EZ (разная категория).

Глядя на изображение, я пробовал использовать основные инструменты стеганографии (stegsolve, проверенные строки, binwalk и т. Д.), Но все они потерпели неудачу.
После этого я начал искать наименьшие значащие биты (LSB) и использовал инструмент Zsteg ( Https://github.com/zed-0xff/zsteg).

root@kali:~/Desktop# zsteg -a pic.png
-a is used for trying all known methods

Хотя это дало нам начальную строку внутри, но остальная часть предоставленного материала была тарабарщиной. Наша цель - найти слово, но поиск этой строки с помощью zsteg подтвердил, что это имеет какое-то отношение к LSB.

Концепция LSB-стеганографии

Что такое LSB?
Самый младший бит, также называемый RightMost Bit, - это младший бит двоичного числа. Например, в двоичном числе 10010010 «0» является младшим значащим битом.

Что такое LSB-стеганография?
LSB-стеганография - это метод стеганографии, при котором мы скрываем сообщения внутри изображения, заменяя наименее значимый бит изображения битами сообщения, которое нужно скрыть.
Изменяя только первый В самый правый бит изображения мы можем вставить наше секретное сообщение, и это также сделает изображение незаметным, но если наше сообщение слишком велико, оно начнет изменять второй правый бит и так далее, и злоумышленник может заметить изменения в изображении. < br /> (источник: https://www.cybrary.it/0p3n/hide-secret-message-inside-image-using-lsb-steganography/)
Итак, основная идея меняется только в последнем bit не будет показывать значительного изменения значений rgb, поэтому изображение будет выглядеть похожим, хотя теперь оно содержит данные.

Поэтому я написал сценарий python для чтения изображения, получения значений RGB, затем преобразования его в двоичный (с 8-битным представлением) и затем объединения наименее значимых битов. После этого просто преобразуйте их в двоичные.

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

Добавив формат формата флага с хешем, последний флаг будет:
Securinets {b47f0d2a8866a75696f94a515d0cdf54c7ea3174}