Web開発者の日常

主にプログラミング関連。たまに日常も綴ります。

SECCON 2015 Online CTF Write-up [Fragment2]

time 2015/12/06

SECCON 2015 Online CTF Write-up [Fragment2]

チーム TomoriNao の TomoriNao です。

世界11位、国内3位という結果でした。友利奈緒尊い。

 

TomoriNao

 

唯一解けた Fragment2 の Write-up を書きたいと思います。

 

チームとしての Write-up はこちらに纏まっています。

SECCON Team TomoriNao – HackMD

 

sponsored link

問題文

Decode me
fragment2.pcap

 

 

解法

fragment2.pcap を WrireShark で開きます。

Wireshark TCP

よく見るとheader の中に flag があるという情報と、 Source Port が 80 と分かります。

 

スクリーンショット 2015-12-06 18.16.36

HTTP なら Wireshark で自動的に HTTP として解析される筈ですし、 Header は ASCII なので普通に読めます。

きっと HTTP/2 だろうと推測して、 HTTP/2 で解析しました。

Wireshark で HTTP/2 としてデコードします。

…としてデコード

現在: none となっていた箇所を HTTP2 に変更します。

none → HTTP2

すると、 このように HyperText Transfer Protocol 2 が現れ、ヘッダ情報が見れるか…と思ったら断片化 (fragment) していて見えません。

Header Block Fragment

Wireshark ではここまでです。

Header Block Fragment がヘッダ情報の生データなので、これをどうにか解析します。HTTP/2 では全てバイナリデータでやり取りされます。

ヘッダには HPACK という圧縮形式が用いられ、ハフマン符号を利用できます。

HPACK をデコードできるライブラリを使えば楽だったのですが、良い知見が無かったので、人力デコードしました。

Header Block Fragment を選択した状態でコンテキストメニューから”…パケットバイトをエキスポート”を選択してエクスポートします。

スクリーンショット 2015-12-06 18.45.13

あとは、出力したファイルをバイナリエディタで開いて文字列の 01 で取り出し…

スクリーンショット 2015-12-06 18.48.10

使い慣れたエディタに貼付け…

fragment2.txt

人力デコード…失敗 (仕様を理解しきれていなくてどこかで間違えました)

失敗

諦めて、ハフマン符号で “SECCON{” が現れる箇所を探して、 “}” まで人力デコードします。

因みに HPACK のハフマン符号化で用いられる変換テーブルは RFC7541 Appendix B. Huffman Code で確認できます。

ハフマン符号

解けました!

SECCON{H++p2i5sOc0o|}

来週末、セキュリティ・ミニキャンプ in 北海道 2015 で HTTP/2 の講義があるので、それまでに正しくデコード出来るようになりたいと思います。

 

感想

今回、前回参加していたチームで参加しようと思っていたのですが、何も連絡が来なかったので、これはぼっち参戦かな…と落胆していました。

しかし、 TL で友利奈緒が友利奈緒を募集しているのを見かけて、僕も(以前)友利奈緒だった事もあり興味を持ったので、チーム TomoriNao に参加することにしました。

結果として、1問しか解けずチームにほとんど貢献できませんでしたが、全力で楽しめました。同じ目標に向かってチームで、複数人で取り組むのは非常に楽しいですね。

チームの友利奈緒の皆さん、ありがとうございました。

 

友利奈緒最高です。今後の活躍にご期待ください。

参加された皆さん、お疲れ様でした。

 

追記

Write-up はこちらで纏められているようです。

SECCON 2015 Online CTFのWrite-upが集まる魔法のスプレッドシート(Write-upまとめ)

 

参考資料

sponsored link

ブックマーク



アーカイブ

2017年3月
« 5月    
 12345
6789101112
13141516171819
20212223242526
2728293031