2015年9月13日日曜日

ctf4b熊本に参加しました

2015年09月12日(土)に熊本の東海大学熊本キャンパスで開かれた「ctf for ビギナーズ 熊本」に参加しました。55人が参加しており、学生から大人までいろんな人が参加されていました。
WebとNetworkの講習があり、資料や問題としてはBinaryジャンルもありました。
講習では、CTFの問題を解くにあたっての説明や、各種ツールの使い方などを分かり易く説明していただきました。
CTFでは問題を解いたらランプが点灯しブザーが鳴るようになっていたので、ブザーが鳴るたびに焦りました。あとTDUよりは少なかったですが、変な動画も流れました。

さて、この記事ではCTFの方で問題が残っているものや、覚えているもののWriteupをします。
まず、最終のスコアボード:

わたしはptr-yudaiで2位でした。1〜3位までは同得点なので1位という扱いになりました。正直こんなにとれるとは思ってませんでした。

Other

1:練習問題 (100pt)

ctf4b{〜〜}みたいなのが書いてあるので、そのまま送信します。

6:Universal Web Page(笑) (500pt)

php://filterを使うのかと思ったのですが、上手くいかずに諦めました。500ptだからもっと難しいのでしょうが、誰も解けてませんでした。

Web

2:Can you login as admin? (100pt)

定番のSQLiで、「' OR '1'='1」をパスワードとして入力するとadminになりました。1番上をadminにしている作者さん優しいです。

3:Find the flag (200pt)

どんな問題か忘れました。ディレクトリトラバーサルだったかな?

4:1M4G3 V13W3R (300pt)

私の苦手なファイルアップロード問題です。php送ったりタイプをimage/jpegに偽装したりしましたが、できませんでした。ディレクトリトラバーサル等も確認できず、分かりませんでした。

5:SQL Injection Level 2 (400pt)

SQLiですが、ORが使えません。ORを削除していると予想して「' OORR '1'='1」を送ったら通りました。ちなみに正攻法はUNION SELECTする方法です。

Binary
7:matryoshka (100pt)
問題ファイルはこれです。fileコマンドで種類を調べるとisoだったので、mountでマウントすると、flagというファイルが出てきました。flagはzipだったので解凍すると、またflagが出てきました。これはmicrosoft cabinet的なファイルだったので、linuxのファイルマネージャで開くと、またファイルが出てきました。今度はPNGだったので、見ると、フラグが見つかります。

8:読めますか? (200pt) 【たぶんこんなタイトル】

問題ファイルはこれです。PNGファイルなのですが、Linuxでは開けませんでした。(解説のときはフラグがギリギリ見えない画像が映ってました)中身はぐちゃぐちゃだったので、しばらく悩みましたが、stringsでctfを探すとフラグが見つかりました。

9:Jump (300pt)

問題ファイルは後であげます。実行ファイルなのでIDA Proで見ると、argvを確認しているらしき部分がありました。順番に「ctf」「is」「so」「fun」(だったかな?)をチェックしているので、argvだなと思って、引数を指定して起動するとフラグが表示されました。

10:Readit (400pt)

アセンブリが渡されて、結果の数字を答える問題。疑似言語みたいなのに訳して、面倒そうだったので飛ばしたら最後までやりませんでした。
これです:
mov     [ebp+var_4], 0
mov     [ebp+var_8], 0
jmp     loc_40101F

loc_40101F:
cmp     [ebp+var_8], 0C8h
jge     short loc_40103C
mov     ecx, [ebp+var_4]
add     ecx, [ebp+var_8]
mov     [ebp+var_4], ecx
mov     edx, [ebp+var_4]
sub     edx, 0Ah
mov     [ebp+var_4], edx
jmp     short loc_401016
mov     eax, [ebp+var_8]
add     eax, 1
mov     [ebp+var_8], eax
jmp    loc_40101F:

loc_40103C:
mov     eax, [ebp+var_4]
push    eax
push    offset Format   ; "%d"
call    ds:printf

11:Checkit (500pt)

問題ファイルはこれです。フラグを入力したら正解かを確認するプログラムです。これに時間をとられてしまった上に解けませんでした。丁度このときにタイタニックの笛の動画が流れ始めて、投げ出しました。

Network

12:Insecure Protocol (100pt)

問題ファイルはこれです。telnetしてたので、telnetを見ると、フラグが書いてました。

13:Insecure Protocol 2 (200pt)

問題ファイル無いです。12番のtelnetと同じですが、フラグの部分が埋められていました。そこで、telnet先のサーバーにtelnetで接続して、パケットから抽出したユーザー名とパスワードを入力するとフラグが返ってきました。

14:File Transfer Protocol (300pt)

これも問題ファイル無いです。たしか、FTP-DATAを見たらフラグが見つかったような......。

15:This quiz is a NETWORK challenge (400pt)

問題ファイルはこれです。実行すると、しばらくして文字が表示されたので、ネットに接続していると予想し、wiresharkでパケットを取得しました。すると、basic認証でwebからファイルを取得していたので、ブラウザでアクセスしてbasicを認証して、フラグのファイルへアクセスしました。なんと逆解析して難読化されたコードを読んだ猛者もいました。

16:Oldies Communication (500pt)

パケットファイルなのですが開けませんでした。ヘッダが壊れていたので、別問題のヘッダを参考に修復して開きました。TCPで何かしているのですが、何をしているのか分からず、フラグもスペースで上書きされていて、IPも存在しなかったので解けませんでした。

以上、概要だけですが、writeupでした。
今回、会場に集まるようなCTFはTDUに続き2回目でしたが、好成績を修められてよかったです。とはいえ、SECCONではもっと難しい問題が出るので、まだまだ勉強するつもりです。

お疲れさまでした。