「freeflag.png」というリンクで、ファイル touched.png
が与えられた。
画像の内容を確認すると、右下に以下のテキストが書かれていた。
A file touched.png
was given via a link saying "freeflag.png".
Checking the image, I found this text in the right bottom:
Made via "The Ultimate Flag Hider". Try it at flag.sdc.tf!
http://flag.sdc.tf/
にアクセスしてみると、画像とテキストを指定し、画像にテキストを隠せるサービスのようだった。
真っ白な幅512、高さ512のPNG画像とテキスト flag
を指定して処理を行い、処理結果の画像をペイントの塗りつぶし機能を用いて調べると、
右下にテキストが追加されたほか、左上の数ピクセルの色が変わっていることがわかった。
詳しく見ると、色が変わったのは4ピクセルであり、これは入力したのが4文字であることに対応していると予想できた。
実際、1文字の f
を指定すると、1ピクセルしか色が変わらなかった。
ABCDEFGHIJKLMNO
を指定して処理を行い、結果の画像に
Opening http://flag.sdc.tf/
, I found that it should be a service where we can specify an image file and a text data to have it hide the text in the image.
I tried having the service hide a text flag
to a all-white PNG image with width 512 and height 512.
Then, I examined resulting image with the "fill" feature of Microsoft Paint.
As a result, I found not only that a text is added to the right bottom but also that the colors of a few pixels in the left top are changed.
Seeing more in detail, I found that colors of 4 pixels are changed, and I guessed that this corresponds to the 4-character input string.
To support this, I tried hiding 1-character text f
and found that the color of only 1 pixel changed.
I tried hiding ABCDEFGHIJKLMNO
and applying "Extract RGBA" (with "Include Alpha" enabled) on
Here is the first part of the result with newlines added:
見比べた結果、LSBをビット0、MSBをビット7として、
ことがわかった。さらに、2BRbr
について同様の処理を行った結果は、以下のようになった。
Compareing the result with the input string, I found that:
(the LSB is bit 0 and the MSB is bit 7)
Also, here is the result of the same process with the input string 2BRbr
:
このことから、
ことがわかった。
これらに基づき、画像データから隠されたテキストデータを抽出する以下のRecipeを作成した。
From this result, I found that:
Based on these findings, I created this Recipe to extract the hidden text data from the image data.
Extract RGBA, 5 more - CyberChef
このRecipeに touched.png
を入力すると、flagが得られた。
I obtained the flag by putting touched.png
as the input of this Recipe.