4 月 1 日に開催された April Fools’ GTF 3rd 2019 にチーム Harekaze で参加しました。最終的にチームで 1557 点を獲得し、順位は得点 170 (121+49) チーム中 1 位でした。
以下、私が解いた問題の write-up です。
問題文に何も書かれていないように見えますが、ソースを見ると display: none
でフラグが書かれていました。
<h1>
Welcome!!
</h1>
<h3>問題</h3>
<p><span style="display: none;"><code>FLAG{Welcome_to_our_gtf}</code></span></p>
︙
FLAG{Welcome_to_our_gtf}
次の元号はなーんだ?(制限時間は元号発表まで!w)
@hiww さんが U+32FF
を試してこれが通らないことを確認していました。もしやと思い、Chrome で window.copy(String.fromCodePoint(0x32FF))
を実行しフラグとして提出してみると受理されました。
㋿
(問題文略)
無限に alert
を呼び出す JavaScript のコードといえば、兵庫県警です。
兵庫県警
スコアサーバーにフラグの画像があります.探してみてください.
scoreseverのヒント: \/assets\/flag-[0-9a-f]{64}.png
スコアサーバのソースコードをあたればフラグのファイル名がわかるのではと考え https://bitbucket.org/nomeaning777/minictf にアクセスしてみましたが、競技時間中には非公開にされていました。
他にどこかで公開されていないか minictf
でググってみると、Docker Hub に保管されているそれっぽいイメージがヒットしました。このイメージを取得し、どのようなファイルがあるか確認していると /app/public/assets/
下にフラグが見つかりました。
$ docker pull nomeaning/minictf:twgtf2019-v3
$ docker run --rm -it nomeaning/minictf:twgtf2019-v3 bash
minictf@101c0abca12e:/app$ ls
Dockerfile Gemfile Gemfile.lock README.md Rakefile app bin config config.ru db lib log mini-ctf.iml public spec tmp vendor
minictf@101c0abca12e:/app$ ls public/
404.html 422.html 500.html assets favicon.ico robots.txt
minictf@101c0abca12e:/app$ ls public/assets/
admin
ajax-loader-1eb9e7880f723999a4ed63eece6a6e4d4976833d3c16dc18b4ace3971728ab0d.gif
application-023970e85115f8db941c7930eff7ed4d0228c5cfb67a11d37700806135f79980.css
application-023970e85115f8db941c7930eff7ed4d0228c5cfb67a11d37700806135f79980.css.gz
application-abaf910b9473dd7caea73dec431685d5d11f5672981ced8daeb0142cd9eb4806.js
application-abaf910b9473dd7caea73dec431685d5d11f5672981ced8daeb0142cd9eb4806.js.gz
bootstrap
bootstrap-fileinput
favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico
favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico.gz
flag-ec8c768ace2d5f5e689fc06ec1f17281d65e273374d344ac82dc224e7da236e6.png
flags
font-awesome
logo-cbe19585c8005d3940d0e7caed7cbc7e0fc4fb05e6bda300e138ac3b4e428c7b.png
raty
minictf@101c0abca12e:/app$
FLAG{THANK_YOU_FOR_PLAY1NG_0UR_GTF!!!}
AFGTF{(TokyoWesternsの学生メンバーの数)_(TokyoWesternsの社会人メンバーの数)}
TokyoWesterns のメンバーへのインタビュー記事にある “TokyoWesternsは10数名程度のチーム” という発言をもとに総当たりをするとフラグが見つかりました。
AFGTF{8_6}
find me on the internet
Hint: 6667
Hint: IRC
Lost GTF という問題名から、幻の April Fools’ GTF 2nd 2018 に関連するところにフラグがあるのではないかと推測できます。
一昨年に開催された April Fools’ GTF 2017 のページ を参照すると、このときには freenode の #afgtf2017
というチャンネルが公式の IRC チャンネルであったことが分かります。このことから、もし April Fools’ GTF 2nd 2018 が開催されていれば公式の IRC チャンネルは #afgtf2018
であっただろうことが推測できます。
freenode の #afgtf2018
に入ると、トピックにフラグが設定されていました。
AFGTF{we_couldn't_make_it_last_year}
Flag Format: /^[A-Za-z]{4} [a-z]{3} [a-z]{6}$/
大文字が最初の単語だけに含まれるということは、おそらくこれは英文なのでしょう。Trivia というカテゴリに関連していそうな英文といえば、Hack the planet です。
Hack the planet
フラグは13:00(JST)にお知らせされます。
と言いつつ、問題画面上部に表示されている textarea には Flag of "Announcements" is
としか表示されていません。どこかに全文があるのではないかと推測して /announcements
にアクセスすると、ソースにフラグが書かれていました。
︙
<div class='announcement-date'>2019/04/01 04:45:00 UTC</div>
<h2>
Flag of "Announcements" is
</h2>
<span style="display:none;">FLAG{No_flag_no_life}</span>
︙
FLAG{No_flag_no_life}
フラグはこちら!
https://forms.gle/trHmr69bX7GYnu8w8
ということでアンケートに回答してみましたが、
Thank you for filling out the survey :)
Your flag is in the score server.
と言われてしまいました。Welcome!! と同様にソースを見てみると、問題文のところに display: none
でフラグが書かれていました。
︙
<h3>問題</h3>
<p>フラグはこちら!<br>
<a href="https://forms.gle/trHmr69bX7GYnu8w8">https://forms.gle/trHmr69bX7GYnu8w8</a></p>
<p><span style="display: none;"><code>AFGTF{Thank_you_for_your_cooperation}</code></span></p>
︙
AFGTF{Thank_you_for_your_cooperation}