読者です 読者をやめる 読者になる 読者になる

Shi0shishi0

とても眠い。

Internet Wache CTF 2016 >>> Writeup

CTF セキュリティ

Internet Wache CTFなるものがあると聞いたので参加してみました。Wacheはなんて発音するんでしょうかね???(ドイツ語?)
ド素人なので、正解者が多そうな問いだけ見る意識の低いプレーをしていましたが、他にも面白そうなの結構あったので全部見れば良かったかなと少し後悔…

Misc 50 The hidden message

以下の様なダンプファイルっぽいものが与えられる。
どうやら8進数が並んでいるっぽい。

0000000 126 062 126 163 142 103 102 153 142 062 065 154 111 121 157 113
0000020 122 155 170 150 132 172 157 147 123 126 144 067 124 152 102 146
0000040 115 107 065 154 130 062 116 150 142 154 071 172 144 104 102 167
0000060 130 063 153 167 144 130 060 113 012
0000071

各8進数に対応するASCIIコード文字に置き換えると、Base64エンコードされた文字列のようなものが出てくる。
デコードするとFLAGになる。

IW{N0_0ne_can_st0p_y0u}

Misc 60 Quick Run

変な文字列が大量に書かれたファイルが渡される問題。見た瞬間「うわっ…」ってなったがよく見るとBase64エンコード…?
全部デコードして保存し、catしてみると大量のQRコードが出てくるのでこれを読み取ることに。
と思ったが、RLoginの画面からだと表示がずれてしまい、上手く読み取れないという…
VirtualBox上のXubuntuに出力結果を移してから読み取ると綺麗に表示された。

f:id:echoha610:20160224000819p:plain

一つ一つ読み取ってつなげるとFLAGに。

IW{QR_C0DES_RUL3}

Misc 70 Rock with the wired shark!

pcapngファイルが与えられるのでWireSharkで開いてみる。
61行目でflag.zipの送受信をしているので、WireSharkの機能でこれを取り出す。
解凍しようとするとパスワードがかかっていたので他も読んでみることに。

37行目でBasic認証が行われており、Base64エンコードされたIDとパスが送信されている。
f:id:echoha610:20160224000937p:plain

 Authorization: Basic ZmxhZzphenVsY3JlbWE=

デコードすると

flag:azulcrema

となったので、パスワードの部分をzipのパスワードに入力してみるとFLAG取れた。

IW{HTTP_BASIC_AUTH_IS_EASY}

Misc80 404 Flag not found

WireSharkでpcapngファイルを開いてみると、flag.txtのGETリクエストと、DNSのパケットがいっぱい。

f:id:echoha610:20160224000932p:plain

DNS queryの後ろにくっついてる文字列を16進数と考えて、ASCIIコードに置き換えるとそれっぽい文章に。

  In [1]: "496e2074686520656e642c206974277320616c6c2061626f757420666c61".decode('hex')
  Out[1]: "In the end, it's all about fla"

全部繋ぐと

"In the end, it's all about flags.
 Whether you win or lose doesn't matter.
 {Ofc, winning is cooler
 Did you find other flags?
 Noboby finds other flags!
 Superman is my hero.
 _HERO!!!_
 Help me my friend, I'm lost in my own mind.
 Always, always, for ever alone.
 Crying until I'm dying.
 Kings never die.
 So do I.
 }!
"

縦読みするとFLAGが出現。

IW{DNS_HACKS}

Code50 A numbers game

与えられているIPアドレスとポート番号を指定してtelnetで繋いでみると、以下のような数学の問題が表示される。

Level 1.: x * 2 = 40

正しい答えを入力すると次の問題が出題される。
問いに答え続ける問題のようなので、telnetの応答を受け取って解答するコードを書いた。
Pythonの標準ライブラリにtelnetlibというのがあるのでそれを使って問いを取得し、返ってくる演算子に合わせて条件分岐する感じに。
演算子は + - * の3つだけだった。

100問目まで答えるとFLAGゲット。

IW{M4TH_1S_34SY}

感想

あたりまえのことですが、食わず嫌いは良くないなと反省しました。
あとは、もう少し早くスクリプト書けるようになりたいなと思いました。
Pythonのお勉強します。