とある父親の妄想日記 -6ページ目

とある父親の妄想日記

地球上で唯一、DNA以外の手段で、世代を超えて情報を蓄積する力を授かった人類。
御来たる未来(みきみく)に、一かけらの希望と奇跡を信じています。
近況:サイバー攻撃と防衛の技術について妄想してます。

パパは一人で、
長野のセキュリティイベントの
「CTF for ビギナーズ」に参加してきたよ。

夜、君と電話できてよかったよ。

お土産も喜んでくれたしね。


今日は、そのwrite-up#ctf4bを書きますた。

題して、

CTF for ビギナーズ 2015 長野 Writeup (by for(;w;) )


また、twitterをされている参加者がいらっしゃるのでしたら、
よろしければ相互フォローしましょう!


コメントを頂ければうれしい限りです!


■講義について

1.CTFとは

capture the flag --技術で隠されたフラグを取って、
ゲーム感覚でスコアを競い合う大会だそうです。

「攻防戦」タイプと、「問題出題」タイプのCTFがありますが、
「問題出題」タイプは、以下の分類などに分かれています。

1.web

2.Network

3.Binary(Reverse)

4.Pwn(Exploit)

5.Forensics

6.Cryptography

7.Trivia

etc...


※ルールは大会によって異なる


また、倫理と法律(不正アクセス禁止法など)をしっかり守るように!とのことです。

おかげさまで、CTFがどんなものなのかわかりました!
ありがとうございます!



2.バイナリ

以下のような内容でした。

a.fileコマンドで正しいファイルタイプを判別しよう

b.stringsコマンドでバイナリファイルのキーワードを拾おう

c.実はそんなに難しくない、アセンブラを読めるようになろう。

d.IDA pro demo の使い方を覚えよう


アセンブラは熟練に時間がかかりそうです。。。
IDA pro はIDEを使った事がある人なら、
慣れるのが早そうです。



3.ネットワーク

以下のような内容でした。

a.TCP/IPのプロトコルについて詳しくなろう

b.wiresharkを使いこなそう
-- Follow TCP streamとか
-- フィルタとか

c.各種サービスの使い方とか(FTP, TELNET ,IRC, SSH, etc...)

d.nc(netcap)コマンドとか

e.pcapファイルをバイナリエディタでみると「ヤテイ。」


あとは色んなサービス(サーバ機能)に触れて慣れてみます!
そして、様々なパケットをキャプチャしてみるのも
いいかもですね!



4.WEB

以下のような内容でした。

a.調査で「何かを入力して、不審な出力を発見する」
--デベロッパツールとか、Googleとか、診断用プロキシツールとか。
--HTTPリクエスト/レスポンスヘッダ
--パーセントエンコード/Javascriptとか

b.何でも試す、自分の経験と知識と勘が頼り。

c.自分しか見られないページに注目


webとphpは私のお友達ですので!

ひたすら会話に慣れるのと、学習が必要という感じですね!




■CTF Write up

いよいよ競技時間です!

皆様、すごい集中力です!

しかし、運営側がジャミングしてくる(笑)


1.バイナリ問題

1-1.binary 100


fileコマンドで、pngファイルとわかれば、
拡張子を変えてファイルを開く。
すると、FLGが画像に書いてありました。。
(OSがLinuxなら普通にひらけそうですがね。。。)



1-2.binary 300


(間数名)_Hello_(計算結果)がフラグと出題され
アセンブラコードが出てきました。

アセンブラコードは↓のように読み解けました。


printf("Hello_%d", (1337 / 23 * 586) - 8);


数値部分は電卓で計算し結果は↓、正解でした。


printf_Hello_31337



2.ネットワーク問題



1-1.network 100 Follow Streeeeam!!


wireshark でpcapファイルを開き
Follow streamするだけで、フラグをゲット、正解でした。


3.WEB問題

3-1.Web 100 Can you login as admin?


SQLi(SQLインジェクション)だったので、
パスワードフォームに ' OR 1 = 1 -- と入れたらFLGゲットでした。



3-2.Web 200 Find the flag



http通信を、ブラウザ標準機能の開発者ツール(windowsなら、F12押せば開くやつ)で見ると、
レスポンスヘッダのクッキーにFLGがありました。


ctf4b%7B%W3b200_Is_7oo_34sy_4_u?%7D


このままでは正解にならないので、
考えの切り口を変えてフラグの文を読んでみる。



W3b200_Is_7oo_34sy_4_u

web200 is too easy for you

# 疑問形の文なのでは?と推測して正解を獲得しました。

W3b200_Is_7oo_34sy_4_u?

※asciiコード表見れば良かったすけどね


3-3.Web 400 SQL Injection Level2

DBはエラーメッセージからSQLiteであることが分かったため、
送信値を書き換え再度アクセスする。


まずはテーブル定義を確認します。↓確かこんな感じだったと思います。


'; SELECT sql FROM sqlite_master; --

# 結果DDL文が以下、表示されます。
CREATE TABLE users (id INTEGER AUTO_INCREMENT, username TEXT, password TEXT).



DDL文から項目名が分かるので、↓な感じでフラグをつかむことができました。



' union select 'admin' from users where username = 'admin' --



■結果


上位の方はこんな感じ。(クリックで拡大します、)






私は↑ですね。(クリックで拡大します、)


・エントリー名:for(;w;)

・順位:30位(60名中)

・スコア:1300
内訳:
-練習問題:100
-バイナリ:400
-ネットワーク:100
-WEB:700


■反省


・記憶があいまいだったり、自信がないことは、ネットで調べる。
telnetの接続コマンドとか。asciiコードとか、プログラムの関数とか。
※ 検索エンジン使うのがめんどくて、CTF中一回もググらずにやってしまったので。。。


・落ち着いて、論理思考を用いて読み解くこと。
あせって、正解を逃したら勿体ない。。。
strings xxx.exe | find "CTF" とかやっちゃったりね(笑)

入力->反応をみる、通信を監視、結果を整理する。可能性を絞り込むなど。


・技術を学習すること。プログラミング、バイナリの読み方、ツールの使い方。脆弱性の突き方、守り方、想像力。


・ホストOSがWindowsのマシンを持ってきたので
次回はKali Linuxのマシンを持ってこよう。。。


・writeup用に問題や解答などをメモすること。。。ぐすん。。。



もちろん今回、初参加でしたが、
これからはオンライン問題ガンガン解いて、
SECCONにも参加したいなとか思います。


運営の皆様、参加者の皆様ありがとうございました。
そして、大変お疲れ様でした。とても楽しかったです。
良い経験になりました。



おかげさまで、ますます
セキュリティエンジニアになりたい気持ちが強くなり
ました。



■最後に

参加された方や、
write up記事を見た人たちが
ダークサイドに落ちないことを願います。


この力はライトセーバーであり、フォースである。

悪にも善にもなり得る。


特に若い人たちが、
魅惑の大金、脅迫、絶望、復讐、愛の喪失などにより、
暗黒面に落ちる
、そのようなことがないよう、
祈るばかりです。


以上となります。