CyBRICS CTF 2021 Writeup

この大会は2021/7/24 19:00(JST)~2021/7/25 19:00(JST)に開催されました。
今回もチームで参戦。結果は272点で482チーム中115位でした。
自分で解けた問題をWriteupとして書いておきます。

Mic Check (Cyber, Baby)

ルールのページにフラグが書いてあった。

cybrics{Th1S_i5_T3h_R34l_m1C_ch3CK_f1A6}

Scanner (rebyC, Baby)

横長の小さい窓から、画像がスクロールして見える。見える画像から頭の中で結合して答える。その時によって問題が異なるようだ。挑戦したときは以下の答え。

1問目:house
2問目:butterfly
3問目:umbrella
4問目:apple
5問目:(QRコード)

5問目は結合したQRコードを正確に再現しないと答えられない。アニメーションGIFの各フレームを見ながら、QRコードに起こす。

$ cat qr.txt
XXXXXXX_X_X_XXXX__XXX_XXXXXXX
X_____X__XXXXX__X_____X_____X
X_XXX_X XXX_____X_X_X_X_XXX_X
X_XXX_X_XXX_X_XX_XXXX_X_XXX_X
X_XXX_X_X__XX_X_XXX___X_XXX_X
X_____X___XX_X_XX_XX__X_____X
XXXXXXX_X_X_X_X_X_X_X_XXXXXXX
__________X_X__XXX___________
XXXX__X_X_XXXX_XXXXXXX__XXX_X
_X_X___X__X_XXXX___X___XX___X
_XX_X_X_XXXXXX__X_____X_X__X_
X_XX_X_X_XX_______X_XXXXX____
_XXX__X__XX_X_X_XX_XXX_XX_XX_
XXXXXX_XX__XX_XXX____XX_____X
___X__X__XXX_X__X__XX_XXX__XX
___X___X___X__XXX_XX_X_XXX___
_X__XXX__X__X_XX_____X__X___X
__X__X____X___X___X__X_X_X_X_
X_XX__X_X____XXXX_X_____XXX__
___X_______X_XXXXXXXXX_X_XXXX
_X__XXXXXXX__XXXXX_XXXXXX_X_X
________XX_____XX__XX___X__XX
XXXXXXX_______X____XX_X_XX_X_
X_____X__XXXXXX___X_X___X____
X_XXX_X__X_X_____X__XXXXXXXX_
X_XXX_X_XXXX_X__XXX_XX__X___X
X_XXX_X_X_X_X_X__X___XX___X_X
X_____X_X_X_XX__X_XXX_X__X_X_
XXXXXXX_XX_X___XXXX_XXX_X_XX_

$ python sqrd.py qr.txt
cybrics{N0w_Y0u_4r3_4_c4sh13r_LOL}
cybrics{N0w_Y0u_4r3_4_c4sh13r_LOL}

CAPTCHA The Flag (rebyC, Easy)

CAPTCHA画像らしきものから、文字を入力する必要があるが、文字は全く見えない。画像を保存して、Stegsolveで開き、いろいろ見てみる。
f:id:satou-y:20210730064159p:plain
今回の画像の場合は、"gllcnyzq"。
f:id:satou-y:20210730064251p:plain
25問答えればよいらしい。問題数もそれほど多くないので、手動で繰り返し、答えていく。
f:id:satou-y:20210730064324p:plain
25問答えたら、フラグが表示された。

cybrics{a_k33n_Ey3_wi11_sp0T_r1GhT_aw4Y}

Ad Network (Web, Baby)

左上の動画部分にリンクがある。そのURLにアクセスしてみる。ブラウザでアクセスするとリダイレクト回数が多すぎてアクセスできない。curlでリダイレクトなしでアクセスしてみる。

$ curl http://adnetwork-cybrics2021.ctf.su/adnetwork
<a href="http://how.adnetwork-cybrics2021.ctf.su/win-discover-college-responsibility/important-fine-laugh-project-movie/race-about-hit-first">See Other</a>.

$ curl http://how.adnetwork-cybrics2021.ctf.su/win-discover-college-responsibility/important-fine-laugh-project-movie/race-about-hit-first
<a href="http://upon.adnetwork-cybrics2021.ctf.su/change-system-environment-people/gas-as-he-hope-middle/after-example-american-final/may-before-operation">See Other</a>.

やはり何回もリダイレクトされるようだ。スクリプトで一番先までリンクをたどる。

import requests

url = 'http://adnetwork-cybrics2021.ctf.su/adnetwork'

for i in range(1337):
    print 'Round %d' % (i+1)
    r = requests.get(url, allow_redirects=False)
    print r.text.rstrip()
    url = r.text.split('"')[1]

r = requests.get(url, allow_redirects=False)
print r.text.rstrip()

実行結果は以下の通り。

        :
Round 1335
<a href="http://market.adnetwork-cybrics2021.ctf.su/option-owner-stock/thus-answer-well-with/find-usually-yourself-already-both">See Other</a>.
Round 1336
<a href="http://late.adnetwork-cybrics2021.ctf.su/body-seven-probably/figure-turn-security-our/cost-able-site-physical-argue/rate-practice-hotel-follow-issue">See Other</a>.
Round 1337
<a href="http://tend.adnetwork-cybrics2021.ctf.su/military-front-low/learn-fill-though-factor-line/hear-hundred-subject-wind/enough-lot-tree-will-color">See Other</a>.
cybrics{f0lL0w_RUl3Z_F0ll0W_r3d1r3C7z}
cybrics{f0lL0w_RUl3Z_F0ll0W_r3d1r3C7z}