LoginSignup
0

More than 3 years have passed since last update.

posted at

SECCON CTF 2019 弐 (server2) writeup

問題内容

  • サーバーは画像Xをもっている。Xは参加者に公開されない。
  • 640×400のアルファチャンネルを含まないPNG画像をサーバーにPOSTすると,あるアルゴリズムによってXと比較され,認識率(類似度)が返ってくる。アルゴリズムは参加者に公開されない。
  • 4時間ごとにStageが進み,アルゴリズムのパラメータが変更される。パラメータは,厳しく判定する方向に変更される。
  • 認識率が50%を超える画像をPOSTすると,Attack Flag 1を取得できる。
  • 認識率が60%を超える画像をPOSTすると,Attack Flag 2を取得できる。
  • 認識率が70%を超える画像をPOSTすると,Attack Flag 3を取得できる。
  • 認識率が45%を超える画像のうち,最も認識率が高い画像をPOSTしたチームに対し,Defence Pointが付与される。
  • アルゴリズムを推測し,認識率の高い画像をPOSTせよ。

Stage1

私は前年大会に出たわけではなかったが,事前の情報収集でSECCON 2018 国際決勝 Writeup - こんとろーるしーこんとろーるぶいを読んでいたので,前年大会でも似た問題が出されていることを知っていた。
そこで,上の記事を参考に(40,40,40)の単色画像を投げてみたところ,最高認識率89.85%を記録した。
その後,手動でいろいろ試したが,何をやっても逆に認識率が低下する結果となり,単色画像が一番良いという結論に至った。

Stage2

単色画像の認識率が低下したので,手動でいろいろ試すのを再開した。最高認識率は以下の画像で50.525%。
test.png

Stage3

Stage1,2でいろいろ試した知見を元に,画像をある程度の大きさのマスに分け,あるマスに色を付けてみて,認識率が上昇したら色を付けたままにし,下降したら色を取り消すという方針を立て,自動化した。しかし,競技終了までに認識率45%には届かず。最高認識率は以下の画像で21.275%。
test.png

その他

  • ptr-yudai氏は,この問題は前年大会の使い回しであると指摘している。ただし,上でリンクした記事とこの記事を読み比べれば分かるように,全く同じというわけではない。

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