以下の内容はhttps://kyuri.hatenablog.jp/entry/2017/03/28/133258より取得しました。


Volga CTF 2017 Quals writeup

m1z0r3として参加して、450ptsで188位でした。

予定があってあまり時間がとれませんでしたが、cryptoを2問解いて250pts入れたのでそのwriteupを書きます。(今回はスクリプトは無し)

 

VC (crypto 50pts)

png画像が2枚渡される問題。B.pngはA.pngになんらかの情報が追加されてるように見えるので、2枚の差分をとるとフラグ。

f:id:Kyuri:20170328130048p:plain

Curved (crypto 200pts)

楕円曲線DSA(ECDSA)を用いた署名を使ってコマンド実行を行うサーバが動いており、そのスクリプトとexit、leaveコマンドの署名が渡される。

lsやcatなどを実行するには、正しい署名を生成する必要があるが、署名をするには秘密鍵が必要となる。

一般にECDSAでは署名を施す際にランダムな値kを用いる必要があり、これが固定値だと秘密鍵が逆算可能となってしまう。(詳しくは楕円曲線DSA - Wikipedia

今回渡されたexitとleaveの署名を見ると、rの値が等しいことからkが同一であったことがわかる。したがって秘密鍵が逆算でき、得られた秘密鍵からcat flagを実行すればフラグが得られる。

実はこの問題、過去にチーム内CTFで出題したものとまったく同じコンセプトだったのでECDSAの処理を見た瞬間に見当がついたりもした。

 

所感

Oracleはやればできそうだったり、Casinoは面白そうな問題だなぁと思った。が、cryptoはどれもPoWがめんどくさすぎて途中で投げ出した。(予定があったのもあるけど)

ちゃんとPoW用のライブラリは用意しておくべきですね...




以上の内容はhttps://kyuri.hatenablog.jp/entry/2017/03/28/133258より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14