2019-04-07 公開
Midnight Sun CTF 2019 [*1] [*2] にチーム「Xplosion」 [*3] の1人として参加した。Xplosionは私とCTFに誘ってくれた友人kangetsu121さんの2人編成。CTF2戦目。
将来の振り返りのために取り組みをメモしておく [*4] 。
※取り組んだ問題は後にWrite Upを参考にしながら復習・追記する。
解けた問題
sanity check [warm up, Misc]
- チャットルーム(IRC?)にログインするだけ。ログイン後の画面にflagそのものが書かれている。
取り組んだ問題
Marcodowno [Web]
- markdown記入フォームとPreviewフレームがある。alert(1)を出すURLを作れという問題
- ソースコードを見ると、markdownはJavaScriptで1行で自力実装されていた(rock regex one-liners)。自力実装の脆弱性を突くのだろう
<
,>
が使えない。<a>タグ
にコードを仕込むのかなと試行錯誤したが、リンク部分をhttps://
から始めないといけない、$
や'
なんかも使えないとなってお手上げ
復習
- 参考:Midnightsun CTF 2019 - Marcodowno | Root Network Security
- imgタグの
src=
部分には記号も使えることを利用。"
でsrcタグを終わらせてonerror="alert(1)"
を仕込む oneerror
は最初の方に拝見したDeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)にピンポイントで掲載されていたはずなのに…img
は普通のimgを書いてもうまくPreviewされなかったため、使えないんだなと勝手に判断してしまっていた。そのせいで主眼を上述の通り<a>タグ
に移してしまっていた- その他当初参考にしたURL:
- XSS フィルター回避チートシート - OWASP
- xsssample writeup - Qiita
- imgタグの
- 教訓:新しい情報や知識を得た後は、一旦捨てた選択肢も再検討してみると良い
- あと一歩だったので悔しいが、そのあと一歩を最後まで詰めきれるかどうかが得てして大切なもの。精進しよう
Marcozuckerbergo [Web]
- 先のMarcodownoで自力実装されていた部分にライブラリを使用したバージョン
- おそらくそのライブラリの脆弱性を突く
- 他の問題にかまけていてしっかり取り組めなかったが、ライブラリの脆弱性をググれば分かったのかしら…?
復習
- 参考:Midnightsun CTF 2019 - Marcozuckerbergo | Root Network Security
- ソースを見るとmarkdownのparseに
mermaid
というライブラリが使用されている <head>
を見るとバージョンは8.0.0。参考ではmermaid
にhtmlを入れ込む方法を探し、見つけたとのこと。結構単純な書き方で入れ込めるみたい<script>
タグは機能しないらしい。前問「Marcodowno」の<img>
タグコードを入れ込んでみたところ、alertが出る
- ソースを見るとmarkdownのparseに
Ezdsa [Crypt]
- デジタル署名についての問題か?
- あとでやろうと思って即撤退(つらい)
Pgp-com [Crypt, Misc]
- 前回取り組んで全然だめだったPGPに関する問題
- あとでやろうと思って手が回らなかった
Polyshell [Programming]
- 規定時間以内に規定回数実行できるシェルスクリプトを書くという問題か?
- シェルスクリプトが分からん、ということですぐに撤退
順位
- 387位/760teams (上位51%)
- Marcodownoを解ければ140-174位に入れていた
- marcozuckerbergoも解ければ90-127位
学び
Linux入門
- CTFを機に、前からきちんとやりたかったLinuxやら仮想環境に入門できた
- 「MobaXterm」というターミナル環境をチームメイトに勧められて導入。なにこれ素敵。
- タブで複数のターミナルを管理できる
- SSHできる
- 仮想環境とのファイルのやりとりも楽。サイドバーでファイルの管理ができる
- 出力が長くても頭が途切れない
- チームメイトに勧められた『新しいLinuxの教科書』を読みながら慣れていこうと思う

- 作者: 三宅英明,大角祐介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/06/06
- メディア: 単行本
- この商品を含むブログ (6件) を見る
雑感
前回のCTFデビュー戦「STEM CTF: Cyber Challenge 2019」から2戦目、まだまだ知識も経験も足りない…。精進せねば。
Crypt, Linux, shell script, PHPあたりは土台を学べばもうちょっとは太刀打ちできるようになるのではと希望を持っているので、ここらへんから学ぶ。
まずは『暗号技術入門』を通読する。

- 作者: 結城浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/08/26
- メディア: 単行本
- この商品を含むブログ (19件) を見る
以下の2冊も読むのを楽しみにしている。

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際
- 作者: Jon Erickson,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/10/22
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 163回
- この商品を含むブログ (19件) を見る

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践
- 作者: 徳丸浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/06/21
- メディア: 単行本
- この商品を含むブログを見る
バイナリ解析やpwn, reverse engineeringがまだ手をつけられていない。Cryptなどの次はこれ。
今回は他にも同時に2つのコンテストに参加した。
というのも、今は1つのコンテストに集中して高順位を目指すというよりはいろんなコンテストに出て広く経験を積む期間と考えたから。
そもそも問題が全然解けないため、取り組める問題を増やすために同時に3つにエントリーした次第。
解いたチーム数に応じて問題のスコアが変動するとか、コンテスト途中に問題が増えたりヒント出たりするだとか、チームで1つのアカウントを共有するとか、案外直前まで参加登録できないコンテストがあるとか、いろいろ初めて知った。
今後、CTFのコンテストに参加したり過去問解いたりするときは本記事のようにMarkdownに記録を残しながら戦おう。その方が試行/思考を整理しながら進められそうだし。
関連
同時参加CTFの1つ目
- Midnightsun CTF 2019(本記事)
同時参加CTFの2つ目 www.kokokocococo555.com
同時参加CTFの3つ目 www.kokokocococo555.com