SITW#30

CTF勢がいるらしいけど、この問題面白いから解いてみてよという事で解いた。

  • とりあえず開いてみる: 開けない
  • 修復を試みてみる: 開けない
    • $ pngfix sample.png
    • $ optipng -fix sample.png
  • 本当にpng
    • $ file sample.png: 本当にpngではある
    • (実はこういうファイルは最初にページャで見る習慣があるけど「臼NG」で始まってるから疑ってはなかった)
  • ヒントを見ると「正方形の枠」とあるのでQRコードかサイズだと思った
    • 前者だとよくわかんないからまずは後者
    • ここでfile出力に戻ると500x468(500と468のどちらに合わせるべきだろう?)
    • 問題文のjpgは400x400なのでどっちとも違うけど500に合わせてみる
    • ここみたいにしてviで以下を修正
 0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR
-0000010: 0000 01f4 0000 01d4 0806 0000 00cb d6df  ................
+0000010: 0000 01f4 0000 01f4 0806 0000 00cb d6df  ................

開いてみるとFLAG{QWERTYUIOP}が取れておしまい。

追記: Windowsだと修正前でも開けるらしい。なるほど、高さが足りなくてフラグが隠れるのね。面白い。じゃあ400の行は根拠としては有効ではないや。