Midnightsun CTF 2019 ひとり反省会[CTF2戦目]

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://から始めないといけない、$'なんかも使えないとなってお手上げ

復習

Marcozuckerbergo [Web]

  • 先のMarcodownoで自力実装されていた部分にライブラリを使用したバージョン
  • おそらくそのライブラリの脆弱性を突く
  • 他の問題にかまけていてしっかり取り組めなかったが、ライブラリの脆弱性をググれば分かったのかしら…?

復習

  • 参考:Midnightsun CTF 2019 - Marcozuckerbergo | Root Network Security
    • ソースを見るとmarkdownのparseにmermaidというライブラリが使用されている
    • <head>を見るとバージョンは8.0.0。参考ではmermaidにhtmlを入れ込む方法を探し、見つけたとのこと。結構単純な書き方で入れ込めるみたい
    • <script>タグは機能しないらしい。前問「Marcodowno」の<img>タグコードを入れ込んでみたところ、alertが出る

Ezdsa [Crypt]

  • デジタル署名についての問題か?
  • あとでやろうと思って即撤退(つらい)

Pgp-com [Crypt, Misc]

  • 前回取り組んで全然だめだったPGPに関する問題
  • あとでやろうと思って手が回らなかった

Polyshell [Programming]

  • 規定時間以内に規定回数実行できるシェルスクリプトを書くという問題か?
  • シェルスクリプトが分からん、ということですぐに撤退

順位

  • 387位/760teams (上位51%)
  • Marcodownoを解ければ140-174位に入れていた
  • marcozuckerbergoも解ければ90-127位

学び

Linux入門

  • CTFを機に、前からきちんとやりたかったLinuxやら仮想環境に入門できた
  • MobaXterm」というターミナル環境をチームメイトに勧められて導入。なにこれ素敵。
    • タブで複数のターミナルを管理できる
    • SSHできる
    • 仮想環境とのファイルのやりとりも楽。サイドバーでファイルの管理ができる
    • 出力が長くても頭が途切れない
  • チームメイトに勧められた『新しいLinuxの教科書』を読みながら慣れていこうと思う

新しいLinuxの教科書

新しいLinuxの教科書

雑感

前回のCTFデビュー戦「STEM CTF: Cyber Challenge 2019」から2戦目、まだまだ知識も経験も足りない…。精進せねば。

Crypt, Linux, shell script, PHPあたりは土台を学べばもうちょっとは太刀打ちできるようになるのではと希望を持っているので、ここらへんから学ぶ。

まずは『暗号技術入門』を通読する。

暗号技術入門 第3版

暗号技術入門 第3版

以下の2冊も読むのを楽しみにしている。

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

バイナリ解析や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

*1:土, 06 4月 2019, 01:00 JST — 日, 07 4月 2019, 01:00 JST

*2:Top7チームはStockholmで開催される決勝戦に参加できるということもあり、テンションが上がる。

*3:前回は「Omelette」というチーム名だったがCTFTIMEでチームに参加できなかったので作り直した

*4:個人的な見解。チームメイトはきっともっといろいろ考えているし、取り組んでいる。