知ることは、たのしい。

入門レベルの情報系学生が勉強する。同じ分野に初めて興味を持った人への参考になればいいなあ

初心者の初心者による初心者のためのWriteup [IceCTF]

今回もチームでIceCTFに参加させていただきましたが役に立たない事この上ない

チームのWriteup

tsunさん
yue_rooさん

Writeup

Complacent

SSL証明書の詳細を表示したら見つかります。 f:id:lenia23:20160827224729j:plain IceCTF{this_1nformation_wasnt_h1dd3n_at_a11}

Kitty(Web)

あるサイトのadminにログインしてくださいというよくある問題です

c7e83c01ed3ef54812673569b2d79c4e1f6554ffeb27706e98c067de9ab12d1a

というハッシュ値がはじめから与えられているので、このハッシュ値を検索するとVo83*が出てきます
これでusername="admin", password="Vo83*"でログインできます

IceCTF{i_guess_hashing_isnt_everything_in_this_world}

Toke(web)

与えられたwebページを見るとログインと登録ページがあるので、
適当にアカウントを作成してログインしてみても特に情報はありません。
f:id:lenia23:20160827231140j:plain そこで、Cookieを見てみるとjwt_tokenというのがあるのでbase64デコードするとフラグが得られます。

jwt_token    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmbGFnIjoiSWNlQ1RGe2pXN190MEszbnNfNFJlX25PX3AxNENFX2ZPUl81M0NyRTdTfSIsInVzZXIiOiJhIn0.dkHtI_PvLkpfNP5Y4maVeK4vJ2miUNddSS2siiXETm0  
IceCTF{jW7_t0K3ns_4Re_nO_p14CE_fOR_53CrE7S}

jwt_tokenというのはJSON Web Tokenという認証などに使われるものみたいです。

JSON Web Token とは、ざっくりいって署名の出来る JSON を含んだ URL Safe なトークンです。署名とは、署名時に使った鍵を用いて、JSON が改ざんされていないかをチェック出来るようにすることです。

だ、そうです。(JSON Web Token の効用より引用)
Base64エンコードされているだけなのでデコードすれば簡単に中身が読めます。
そのため、埋め込む情報には注意が必要となります。

Intercepted Conversations Pt.1

この問題は自力では途中までしか出来ず、チームの2人のおかげでフラグを読みだすことが出来ました。
pcapファイル(パケット情報が記録されているファイル)からフラグを見つける問題で、
送られているデータの0x00以外を並べてみると
0a 0c 07 0c 0e 1c 2f 36 0d 27 2d 13 1e 19 20 33 2d 1b 36 20 12 24 17 2d 21 0f 17 36 21 17 22 30
がわかり、また他のパケットを見ていると、
packet[123]: idProduct: Kinesis Advantage PRO MPC/USB Keyboard (0x0007)
と書いてあったので上の数値列がキーボードのスキャンコードと予想しUSB Keyboardのスキャンコードで変換したところ、
gidiky{,j0-p1v3;-x,3o7t-4lt,4t5}が得られたところまで出来ました。
しかし、これではフラグの形をしていないのでもちろん不正解で、チームメンバーによってこのキーボードはDvorak配列なのではないか、
シフトキーの情報(各データの先頭に02とか20という形で存在)を見落としてるということを教えていただき、無事フラグを復元してもらえました。
IceCTF{Wh0_l1K3S_qw3R7Y_4NYw4y5}
f:id:lenia23:20160828000939j:plain