🕵️

TsukuCTF2023 writeup

2023/12/11に公開

はじめに

2023年12月9(土)12時20分~10日(日)18時00分(29時間40分※つくし)にて開催されたTsukuCTF2023に参加したので振り返りのwriteupを書いていきます。
今回もチームSabaNoMisoniとして参加し、結果として36位でした。一緒に参加したkaitoさんのwriteupはこちらです。
ちなみに今年はtaskctf(taskさんの誕生日)がTsukuCTFにマージされているらしいです。
誕生日おめでとうございました!!!
https://x.com/task4233/status/1718622333727072292?s=20

チーム成績/個人成績

チーム成績

36位(/343 teams)
25問 (/39 問)
7689pt (/14431 pt)
OSINT問が30問という狂気

個人成績

8問
2550pt
貢献度が少ない!

writeup

OSINT: airport / 100pt


つくしくんは、旅の思い出を振り返っていましたが、この写真はどこの空港かわからなくなりました。
ここはどこの空港か教えてくれませんか?
Flagフォーマットは TsukuCTF23{空港の3レターコード(IATA)} です。

Tsukushi looks back his trip memories, but he forgot where this picture is taken. Could you tell me which airport this is?
The flag format is TsukuCTF23{3 letter code of the airport (IATA)}.

画像検索にそのままかけると伊丹空港からの写真とわかる。伊丹空港の3レターコードを調べると"ITM"とわかる。

flag

TsukuCTF23{ITM}

OSINT: mab / 228pt

mab.main.jpが使用しているレンタルサーバサービスを特定し、そのWebサイトのドメイン名を答えてください。Flagフォーマットは TsukuCTF23{ドメイン名}です。
Please identify the rental server service used by mab.main.jp and answer me with the domain name of the website. The flag format is TsukuCTF23{domain_name}.

ドメインからレンタルサーバを特定できるのか?とはなったものの、DNS周りのOSINTツールを試してみたところ、dnsdumpsterにてレンタルサーバのドメイン(逆引きレコード情報)が見つかった。
よくよく考えると「レンタルサーバ系は逆引きDNSがレンタルサーバ側のドメインで登録されている」⇔「利用者側のドメインで登録できない」となり納得感を持ってのフラグcollectでした。
何よりドメイン情報に関して、xlsx出力やグラフ出力ができるdnsdumpsterがとても優秀。

flag

TsukuCTF23{lolipop.jp}

OSINT: Yuki / 446pt


雪、無音、窓辺にて。

フラグのフォーマットは、TsukuCTF23{緯度_経度}です。
緯度経度は小数第四位を切り捨てとします(精度に注意)。

Snow, silent, at window.

The flag format is TsukuCTF23{latitude_longitude}.
Latitude and longitude are rounded down to the fourth decimal place (note the precision).

画像の特徴的な部分で何回か画像検索すると、北海道の定山渓温泉だとあたりがつけられる。画像全体での検索だと雪景色の画像に埋もれてしまうので、特徴的な部分で画像検索をかけてみるのが良い。

  • 上部の橋
  • 椅子の形状
  • 下を流れている川
  • 川に沿って建てられている赤い屋根の建物の近辺

    あとはGoogleMapから該当の画角にはまりそうな場所を探すと、定山渓ビューホテル内のカフェサンリバーからの写真とわかるので座標をフラグとして入力する。
flag

TsukuCTF23{42.968_141.167}

OSINT: koi / 488pt


画像フォルダを漁っていると、鯉のあらいを初めて食べた時の画像が出てきた。
当時のお店を再度訪ね、鯉の洗いを食べたいが電話番号が思い出せない。

誰か、私の代わりにお店を調べ、電話番号を教えてほしい。

記憶では、お店に行く途中で見かけたお皿が使われていた気がする。。。

Flagは電話番号となっており、ハイフンは不要である。
TsukuCTF23{電話番号}

I was sorting through my picture folder and found a picture of the first time I ate 鯉のあらい.
I want to go to that restaurant again to try 鯉のあらい, but I can't remember the phone number.

Can someone please look it up and give me the phone number?

My recollection is that they used a plate I saw on the way to the restaurant.

Flag format is the phone number, And no hyphen needed.
TsukuCTF23{phone number}

問題文から、鯉の洗いが盛られている皿が有名な焼き物だろうと想定されるため、模様の特徴から焼き物を調べてみる。
細い切れ目の模様は「飛び鉋(とびかんな)」と言われ、「小石原焼(こいしばらやき)」や「小鹿田焼(おんたやき)」が有名とわかる(兄弟窯らしい)。エリアとしては、小石原焼が福岡県東峰村、小鹿田焼が大分県日田市とのことで九州上部のエリアまで絞ることができる。模様の微妙な違いから小石原焼に近いと推測を立てておく。
問題文から「お店に行く途中で見かけた」とあることから、陶器市などが開催されているタイミングで該当のお店に訪れたと考え、東峰村や日田市で開催されている陶器市がないか調べてみる。東峰村の陶器市に近辺のご飯屋さんがまとまっていたため、端からフラグとして入力していくも正解にたどり着けず。日田市周辺でも同様のことをやったがうまくいかず。かれこれ4時間程度格闘しいったん休憩。

ご飯を食べて頭をリフレッシュして方針を変更。(ここが一番重要だったかもしれない)

問題文のノイズを考え、確定情報のみから当てに行くことにした。焼き物の形状的にエリアまでは確実にあっていると想定し、あとは鯉料理のみの情報で攻めてみることにした。東峰村上空、日田市上空、福岡上空あたりをGoogleMapで「鯉料理」検索にかけ、画像からそれらしきお店を片っ端から入力していく(ブルートフォースアタック!!!)
この時実はフラグを入力していたとことが後からわかりました。

結果的には、運営の調整によりフラグが当たっていたことがわかり何とか正解にたどり着いた。

flag

TsukuCTF23{0936176250}

OSINT: grass_court / 488pt


しばらく使われていないテニスコートのようだ。
この日本にあるテニスコートの場所はどこだろう。
フラグの形式は TsukuCTF23{緯度_経度}です。
小数点以下5位を切り捨てて、小数点以下4桁で答えてください。

Looks like a tennis court that hasn't been used for a while.
Where is the location of this tennis court in Japan?
The format of the flag is TsukuCTF23{latitude_longitude}.
Round down to 5 decimal places and submit your answer to 4 decimal places.

画像から既視感を感じ、よくよく見てみると電波望遠鏡で使われているであろうパラボラアンテナが2つ。きっとVLBIで使われている中の一つだろうとあたりをつけ調べると、国立天文台水沢VLBI観測所のものだとわかったので近辺を探しテニスコートの座標をフラグとして入力した。
ありがとう、記憶の中のFJSW先生。

flag

TsukuCTF23{39.1349_141.1323}

OSINT: sunset / 499pt


TsukuCTF運営の1人であるshioが、今年に開催されたあるイベントが終わった後に夕日を撮影した。
この写真が撮影された日時を求めよ。
フラグフォーマットはTsukuCTF23{YYYY/MM/DD_hh:mm}である。
例えば、TsukuCTF2023の開始日時はTsukuCTF23{2023/12/09_12:20}
なお、誤差は1分まで許容され、日本標準時を用いる。

shio, one of the TsukuCTF admins, took a picture of the sunset after an event held this year.
I need you to find the date and time this photo was taken.
The flag format is TsukuCTF23{YYYY/MM/DD_hh:mm}.
For example, the start date and time of TsukuCTF2023 is TsukuCTF23{2023/12/09_12:20}.
Note that an error of up to 1 minute is allowed and the answer is based on Japan Standard Time.

画像の特徴的な情報で画像検索をかけてみると「新潟県西海岸公園」とわかる。

  • 夕焼けの撮影スポットと推測
  • 奥に伸びている場所が名所かもしれない
  • 大量の消波ブロックは大勢に撮られているかもしれない

場所が分かったうえで、問題文からshioさんが新潟に行ってる日時を探す。Xを探すと以下の呟きが見つかる。
https://x.com/shio_sa1t/status/1700425209105481743?s=20

問題文からイベント(セキュリティ・ミニキャンプin新潟2023)が終わった後に海岸に言っているので2023年09月10日と絞れる。当日の新潟県の日没を調べると18時01分とわかる。

日没の定義は「太陽の上辺が地平線(または水平線)に一致する時刻」のため、画像からは太陽1個分はほど出ていると想定される。太陽1個分の時間を調べるとおおよそ2分程度と出てくるためその分を減算した時間を求める。入力候補としては「18:00」「17:57」「17:54」の三つとし入力したところ正解した。

こう見ると思ったより入力制限3回はかなり広い範囲をカバーできているので、親切設計な気もする。運営側の真値がわからん。

flag

TsukuCTF23{2023/09/10_17:57}

misc: what_os / 201pt

とある研究所から、昔にシェル操作を行った紙が送られてきた来たんだが、 なんのOSでシェルを操作しているか気になってな。 バージョンの情報などは必要ないから、OSの名前だけを教えてくれないか?

にしても、データとかではなく紙で送られて来たんだ。一体何年前のOSなんだ。。。

送られてきた紙をダウンロードして確認してほしい。

A lab sent me a paper of operation for a shell, and I wondered on which OS it was running.
Please let me know only the name of the OS except for other information such as version.

The data is sent by paper, not a program by the way. It means the OS is really old, right?
Anyway, please check the attached file and investigate it.

配布ファイル:tty.txt
tty.txt
login: root
root
# ls -al
total    8
 41 sdrwr-  7 root     70 Jan  1 00:00:00 .
 41 sdrwr-  7 root     70 Jan  1 00:00:00 ..
 43 sdrwr-  2 root    630 Jan  1 00:00:00 bin
 42 sdrwr-  2 root    250 Jan  1 00:00:00 dev
104 sdrwr-  2 root    110 Jan  1 00:00:00 etc
114 sdrwrw  2 root    140 Jan  1 00:00:00 tmp
 41 sdrwr-  9 root    100 Jan  1 00:00:00 usr
# chdir etc
# ls -al
total   34
104 sdrwr-  2 root    110 Jan  1 00:00:00 .
 41 sdrwr-  7 root     70 Jan  1 00:00:00 ..
106 lxrwr-  1 bin    5778 Jan  1 00:00:00 as2
105 sxrwr-  1 bin     446 Jan  1 00:00:00 getty
107 sxrwr-  1 sys    2662 Jan  1 00:00:00 glob
108 sxrwr-  1 sys    1192 Jan  1 00:00:00 init
109 sxrwr-  1 sys     186 Jan  1 00:00:00 msh
110 s-rw--  1 sys     272 Jan  1 00:00:00 passwd
111 s-rwr-  1 root    512 Jan  1 00:00:00 std0
112 s-rwr-  1 bin    2082 Jan  1 00:00:00 suftab
113 s-rwr-  1 sys      88 Jan  1 00:00:00 uids
# ed uids
88
1,7p
root:0
sys:1
bin:3
adm:3
jfo:4
ken:6
dmr:7
q
# echo "who is dmr and ken?"
who is dmr and ken? 
# chdir /
# chdir usr
# ls -al
total   10
 41 sdrwr-  9 root    100 Jan  1 00:00:00 .
 41 sdrwr-  9 root    100 Jan  1 00:00:00 ..
 42 sdrwr-  2 root     80 Jan  1 00:00:00 boot
 49 sdrwr-  2 root     60 Jan  1 00:00:00 fort
 54 sdrwr-  2 root     70 Jan  1 00:00:00 jack
 57 sdrwr-  5 ken     120 Jan  1 00:00:00 ken
 59 sdrwr-  2 root    110 Jan  1 00:00:00 lib
 83 sdrwr-  5 root     60 Jan  1 00:00:00 src
 68 sdrwr-  2 root    160 Jan  1 00:00:00 sys
208 sxrwrw  1 root     54 Jan  1 00:00:00 x
# chdir sys
# ls -al
total  325
 68 sdrwr-  2 root    160 Jan  1 00:00:00 .
 41 sdrwr-  9 root    100 Jan  1 00:00:00 ..
 70 sxrwr-  1 root   2192 Jan  1 00:00:00 a.out
 71 l-rwr-  1 root  16448 Jan  1 00:00:00 core
 72 s-rwr-  1 sys    1928 Jan  1 00:00:00 maki.s
 69 lxrwrw  1 root  12636 Jan  1 00:00:00 u0.s
 81 lxrwrw  1 root  18901 Jan  1 00:00:00 u1.s
 80 lxrwrw  1 root  19053 Jan  1 00:00:00 u2.s
 79 lxrwrw  1 root   7037 Jan  1 00:00:00 u3.s
 78 lxrwrw  1 root  13240 Jan  1 00:00:00 u4.s
 77 lxrwrw  1 root   9451 Jan  1 00:00:00 u5.s
 76 lxrwrw  1 root   9819 Jan  1 00:00:00 u6.s
 75 lxrwrw  1 root  16293 Jan  1 00:00:00 u7.s
 74 lxrwrw  1 root  17257 Jan  1 00:00:00 u8.s
 73 lxrwrw  1 root  10784 Jan  1 00:00:00 u9.s
 82 sxrwrw  1 root   1422 Jan  1 00:00:00 ux.s
# echo "OS source codes"
OS source codes 
# cal
Year? 1971








                                  1971



            Jan                     Feb                     Mar
    S  M Tu  W Th  F  S     S  M Tu  W Th  F  S     S  M Tu  W Th  F  S
                   1  2        1  2  3  4  5  6        1  2  3  4  5  6
    3  4  5  6  7  8  9     7  8  9 10 11 12 13     7  8  9 10 11 12 13
   10 11 12 13 14 15 16    14 15 16 17 18 19 20    14 15 16 17 18 19 20
   17 18 19 20 21 22 23    21 22 23 24 25 26 27    21 22 23 24 25 26 27
   24 25 26 27 28 29 30    28                      28 29 30 31
   31



            Apr                     May                     Jun
    S  M Tu  W Th  F  S     S  M Tu  W Th  F  S     S  M Tu  W Th  F  S
                1  2  3                       1           1  2  3  4  5
    4  5  6  7  8  9 10     2  3  4  5  6  7  8     6  7  8  9 10 11 12

OSとは何か少し悩んだものの、きっとUNIXだろうと思いフラグを入れたところあたっていた。ChatGPT大先生もUNIXって言ってました。

flag

TsukuCTF23{UNIX}

おわりに

初のTsukuCTF参加でした。正直、準備不足だったなという感想です。29時間40分という長めのCTFなので、時間が足りないということはなかった印象です。ただ上位チームを見ると、メンバー数が概ね5名程度と体制を最低限整えて挑んでいる気もしたので、事前準備が足りてなかったなと反省してます。来年は誰かに声かけて参加したい。

今回はkaitoさんとのツーマンセルだったので、自分は勝手にhard問題を中心に解いてました。結果としてはkoi/grass_court/sunsetの三つに留まりました。udon_2023に関して解けなかったのがとても悔やまれます。
koiに関しては、少々トラブルはあったものの、結果として正解はしていたので良かったです。入力したフラグに自信がないので、気持ち的には不正解ですが。鯉の洗いを食べに行きたいです。
sunsetに関しては、いつか出るだろうなと思っていた、時間を当てる問題でわくわくしてました笑。SNSから情報を拾ってきたうえで、改めて問題文を正確に拾う必要があり地味に手を焼きました。「イベント運営後に海まで行かないでしょ」という先入観に支配されて2回入力ミスしました。

結果としては上位に食い込めなかったものの、長時間かつ問題数が多いOSINTCTFを求めていたのでとても有意義な2日でした。ぜひ来年は体制を整えたうえで上位を目指したいところです。OSINT以外も課題です
運営の皆様大変楽しいイベントをありがとうございました。来年も楽しみにしてます。

Discussion