search
LoginSignup
0
Help us understand the problem. What are the problem?

posted at

updated at

EZ CTF 2022 Write up

5/7 - 5/8 に開催されたEZ CTFにteam tarutaruとして参加しました。計2515 pointsで、156位でした。
私が解いた問題について、Write Upを残しておきます。眠いテンションで書いているので、読みにくいのは許してください。

Forensics

DigitalOcean (50 points)

Digital Oceanというクラウドコンピューティングの説明スライドが渡されました。スライドの2pと5pにフラグが記載されています。

Crypto

More Sense (60 points)

More Sense.txt
BB BBBBB ABA AAA AAABB AABBAB BABB BBBBB AAB ABA AABBAB ABB AAAAB BABB AABBAB BBBBB AAB BBAAA AABBAB BBBBB AABA AABBAB AAAA AAABB ABA AAABB

上記のテキストファイルが渡されました。どうせモールス信号でしょう。CyberChefでデコードしたらできました。

No Kidding (70 points)

No Kidding.txt
8/44/444/7777\\\444/7777\\\8/44/33\\\555/2/6/33/7777/8\\\222/8/333\\\333/555/2/4\\\33/888/33/33/33/33/777

上記のテキストファイルが渡されます。なんとなくケータイ電話のキー入力に見えたので、そのとおりにデコードします。\\\の意味がいまいちわかりませんでしたが、_に置換したら正解になりました。

OMG (80 points)

大量にOMGと記載されたテキストが渡されました。不自然に隙間が空いているので、ASCIIアートかなと思い、広めの画面で表示したらビンゴでした。OMG.png

Steganography

Bernie (125 points)

写真が配布されます。steghideで写真の中身を確認したところFlagHere.txtというファイルがありました。この中身がフラグです。steghideのパスワードは空です。

Nobody's perfect (210 points)

写真が配布されます。Steganography Onlineで分析したところ、フラグが隠されていました。nobody.png

Misc

Grandma (350 points)

画像ファイル? が配布されています。拡張子はjpgですが、画像ビューアでは開けず、fileコマンドで調べるとtextと言われるので中身を見てみます。

% cat Grandma.jpg
00000000  XX XX XX 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52  |.JPG........IHDR|
00000010  00 00 01 e7 00 00 01 6c 08 02 00 00 00 79 18 e6  |...?...l.....y.?|
00000020  18 00 00 00 01 73 52 47 42 00 ae ce 1c e9 00 00  |.....sRGB.??.?..|
00000030  00 04 67 41 4d 41 00 00 b1 8f 0b fc 61 05 00 00  |..gAMA..?..?a...|
00000040  00 09 70 48 59 73 00 00 12 73 00 00 12 73 01 8c  |..pHYs...s...s..|
00000050  22 b9 07 00 00 ff a5 49 44 41 54 78 5e cc bd 07  |"?...??IDATx^̽.|
00000060  bc 65 57 59 f7 bf f7 39 67 9f 7e eb d4 4c 3a 69  |?eWY???9g.~??L:i|
00000070  34 05 12 13 20 74 94 a2 a8 28 60 c1 8a 8a 82 29  |4... t.??(`?...)|
00000080  f4 57 41 5f 91 a2 a2 20 4d 31 74 08 04 01 83 08  |?WA_.?? M1t.....|
00000090  08 2a dd 42 0b 25 40 80 14 12 d2 27 93 a9 77 e6  |.*?B.%@...?'.?w?|
....以下略

どうやら中身は何らかのファイルをxxdでダンプしたもののようです。ただし、先頭がXX XX XXとなっていることから、ここだけ手動で改ざんされているようです。
調べたところ、xxdでダンプした内容はxxd -rで復元できるそうです。適当なスクリプトを書いて、ファイルを復元します。

parse.py
with open("Grandma.jpg", "rb") as fp:
    for line in fp:
        for c in line.strip():
            if c == ord('X'):
                c = ord('0') # とりあえず0にしておく
            print(chr(c), end="")
        print()
% python parse.py | xxd -r > img.jpg

これで、先頭のXX XX XX以外は復元ができました。問題はMagic Numberです。元のファイルの拡張子がjpgであったことから、jpgにすれば動くだろうと、先頭をFF D8 FF EEFF D8 DD E0に変えてみたのですが一向に画像ファイルとして認識されません。さらに、4文字目はXXではなく47(G)で、これまで書き換えなければならないというのも違和感があります。
バイナリエディタでファイルとにらめっこしていたところ、ヘッダ相当と思われる部分にIHDRsRGBという文字列を発見しました。検索したところ、これはPNGファイルのヘッダに存在するフィールドのようです。まさかと思い、Magic Numberをpngを意味する89 50 4E 47に書き換えてみたところ、画像ファイルとして認識されました。
この画像にフラグが記載されています。

感想

最近CTFに出るたびに「あまり解けなかった」と言っている気がします。今回のCTFは割とエスパーが多い気がしたのですが、これは単に僕の知識不足なのでしょうか?いずれにせよ、もっと精進せにゃ...

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0
Help us understand the problem. What are the problem?