SECCON 2013 四国大会 writeup

SECCON 2013 四国大会に参加してきました. 結果は,優勝でした. 以下の得点推移のとおり,開始40分ごろからずっと単独1位だったみたい.

f:id:Epsilon-Delta:20131021222821p:plain

解けた問題

writeupはこちらにないもののみ.

2. Enterprise.jpgファイルの更新時間は何時ですか? (Forensics 200)

ファイルFilesystem002.binの内容を確認し、次の設問に回答してください。 Enterprise.jpgファイルの更新時間は何時ですか? hh:mm:ss形式で答えてください。(日付は不要)

一瞬,ファイルシステムのイメージかと思ったが,1.5KBと非常に小さいので,とりあえずhexdumpで開いてみるとEnterprise.jpgという文字が.

f:id:Epsilon-Delta:20131021224250p:plain

なんか,ファイルシステムのエントリ情報っぽいと思って調べてみると,福岡大会でFATのファイルエントリが出たというwriteupを見つけたので,間違いないと確信. 少し調べてみると,exFATだということがわかったので,仕様に則って「e2 54 55 3a」をDOS Time Formatで変換すると,10:39:04が最終更新時刻だとわかった. DOS Time Formatは秒を2分の1で保存しているというのに気づかずに時間を取られてしまった.

7. 親子の会話に割り込もう。 (Web 300)

http://10.0.2.4:8080/ の /users/admin/ の中にあるファイルの内容を答えよ。

http://10.0.2.4:8080/ にアクセスしてみると,web-lib.plminiserv.plが用意されていた.
また,http://10.0.2.4:8080/users/admin/にアクセスすると以下のようなログインページが表示される.

f:id:Epsilon-Delta:20131022014812p:plain

どうやらwebminを使っている模様.
とりあえず与えられたソースコードを読んでいたところ,User Agentをwebminにして/users/admin/にアクセスすることでbasic認証を求められることがわかる.(これは仕様らしい)
ダミーのid,passwordの書かれたファイルは見つかったものの,それ以外は分からなかったため「webmin basic authentication vuln」で検索をかけたところexploitのコードが見つかる.
これを使うことでadminとしてログインでき,flagとなる「CVE-2002-0757、なつかしい。」が手に入った.

exploitのコードは,basic認証の際にidに

a a 1
new 1234567890 admin

とすれば、セッションID:1234567890がadminとして登録されるというものであった.

10. Find the secret key. (Binary 200)

実行ファイルに隠された鍵を探して下さい。FindTheSecretKey.exe

DOSで実行するだけ.詳細は後で追記します.

14. ↑↑↓↓←→←→ (Programming 200)

s=0 [ output(9); s:=s+1; ]

(s=1 | s=3) & accelX() > 0.7 [ output(13); s:=s+1; ]

(s=1 | s=3) & accelX() < -0.7 [ output(30); s:=s+1; ]

s=1 & accelY() < -0.7 [ output(0); s:=s+1; ]

s=3 & accelY() < -0.7 [ output(12); s:=s+1; ]

(s=1 | s=3) & accelY() > 0.7 [ output(29); s:=s+1; ]

(s=2 | s=4) & accelY() > -0.7 [ s:=s+1; ]

(s=5 | s=7) & accelX() > 0.7 [ output(24); s:=s+1; ]

(s=5 | s=7) & accelX() < -0.7 [ output(25); s:=s+1; ]

(s=5 | s=7) & accelY() < -0.7 [ output(26); s:=s+1; ]

s=5 & accelY() > 0.7 [ output(15); s:=s+1; ]

s=7 & accelY() > 0.7 [ output(22); s:=s+1; ]

(s=6 | s=8) & accelY() < 0.7 [ s:=s+1; ]

(s=9 | s=13) & accelX() > 0.7 [ output(29); s:=s+1; ]

s=9 & accelX() < -0.7 [ output(5); s:=s+1; ]

s=13 & accelX() < -0.7 [ output(3); s:=s+1; ]

(s=9 | s=13) & accelY() > 0.7 [ output(31); s:=s+1; ]

(s=9 | s=13) & accelY() < -0.7 [ output(30); s:=s+1; ]

(s=10 | s=14) & accelX() > -0.7 [ s:=s+1; ]

s=11 & accelX() > 0.7 [ output(0); s:=s+1; ]

s=15 & accelX() > 0.7 [ output(20); s:=s+1; ]

(s=11 | s=15) & accelX() < -0.7 [ output(22); s:=s+1; ]

(s=11 | s=15) & accelY() > 0.7 [ output(23); s:=s+1; ]

(s=11 | s=15) & accelY() > 0.7 [ output(24); s:=s+1; ]

(s=11 | s=15) & accelY() < -0.7 [ output(29); s:=s+1; ]

(s=12 | s=16) & accelX() < 0.7 [ s:=s+1; ]

s=17 [ output(6); s:=s+1; ]

全く訳のわからないソースコードを与えられた. とりあえず検索してみると,このpdfがヒット. どうやら,科学の甲子園という大会で使われた独自言語で,加速度に応じて文字列を出力するらしいプログラムであることが分かった.

このpdfに言語仕様に従って以下のソースでエミュレーションする. 入力として,タイトルの「↑↑↓↓←→←→」の動作を与えてやれば,「I !OVE CTF」という文字列が表示された. 実装が間違っていたのか,正解は「I LOVE CTF」だった.

SECCON 2013 香川大会 14. ↑↑↓↓←→←→ (Programming 200)

解けなかった問題

8. 本物はどれ (Network 200)

192.168.58.0/24でサーバが動作しています。 本物はどれでしょう?

a:本物のホストのIPアドレス b:上記ホストのTCPオープンポートのうち最も大きいポート番号 回答形式:"a:b"のsha1ハッシュ値

例) echo -n 192.168.58.1:8080 | sha1sum

とりあえず,nmapで192.168.58.0/24にpingスキャンしてみるものも芳しい結果はなし. 終了10分くらい前に,192.168.58.0/24のすべてのホストにwgetしてみたところ,192.168.58.169だけ応答が異なることに気づいた. 192.168.58.169にnmapしたが,途中で時間切れ.あとで聞いたところによるとホストは合っていたらしい...

12. 読めるかな? (Misc 200)

SG ks IENF REVD eFNF Q0NP TiB DVE YgQ2 hhb Gx lb mdlc i4gS GF2Z SBm dW4 /IF Ro aX MgbW Vzc2 FnZS Bpcy Bub 3Qg YSBm bGF nL CB zb3J yeS 4= ??

誰も解けなかった問題. Base64でデコードすると,「Hi, CEDECxSECCON CTF Challenger. Have fun? This message is not a flag, sorry.」とのこと.

旅行記

f:id:Epsilon-Delta:20131021234757j:plain

f:id:Epsilon-Delta:20131021234902j:plain

f:id:Epsilon-Delta:20131021234949j:plain

うどん県サイコー

f:id:Epsilon-Delta:20131022170742j:plain