TsukuCTF 2022に参加しました
ひさしぶりに参加しました。OSINT以外のジャンルで正の点数を得ることができませんでしたが、いろいろ実験したり考えたりできたので十分楽しめました。
解けた問題
[Tsukushi]
- Welcome (294pts)
[OSINT]
- Attack of Tsukushi (100pts)
- FlyMeToTheTsukushi (218pts)
- sky (375pts)
- station (382pts)
- Whare (406pts)
- Gorgeous Interior Bus (433pts)
- Bringer_of_happpiness (446pts)
- uTSUKUSHIi (499pts)
Welcome(294pts)
Discordの #-welcome-to-tsukuctf
の説明欄にて公開されていました。
TsukuCTF22{Welcome_to_TsukuCTF_2022!!!!}
Attack of Tsukushi (100pts)
進撃の巨人は読んだことがないのですが、進撃の巨人のキャラなのは何となくわかりました。
「進撃の巨人 銅像」で調べると、 JR日田駅だということがわかりました。
TsukuCTF22{8770013}
FlyMeToTheTsukushi (218pts)
反射で「TAKENOYA」の字が確認できました。「竹乃屋 空港」で調べると、どうやら福岡空港しか空港内に出店していないみたいだったので、それが答えでした。
TsukuCTF22{FUKUOKA}
sky (375pts)
最初新幹線と勘違いしていたのですが、「centx」「wind」等の情報から、名古屋鉄道の車輌であることがわかりました。
内装・中央の車内図から、8両編成の特急だということがわかり、調べると、それはミュースカイであることがわかりました。
ミュースカイは、セントレアと名鉄名古屋を結ぶ特急です。
窓を確認したところ、真っ暗なので、撮影地点がトンネル内だと仮定しました。
すると、この区間でトンネルがあるのは、名鉄名古屋ー金山間しかないことがわかりました。
2択に絞れたので、全部試してみたところ、
TsukuCTF22{名鉄名古屋}
が答えでした。
station (382pts)
画像の左部分が何を示しているかが重要な問題でした。
画像の左上を見ると、「(多分"南"でしょう)北線 東豊線」という文字があり、すぐに「札幌市営地下鉄東西線」であることがわかりました。また、女性専用車両が12両目にあることからも、これが正しいと判断できました[1]。
画像の左側の看板を「乗り換え案内」だと勘違いしていたので、
TsukuCTF{大通}
と誤答をしてしまいました。
いろいろ調査をしていると、左上の見切れている字が「西11丁目」に見えてきました。
調査を続けていると、左側の看板は、以下の画像のような物であることがわかったので、これが答えだという確信が持てました。
TsukuCTF22{西11丁目}
Where (406pts)
見るからに渋谷です。それがわからなくとも、画像内で一番高い建物に「SHIBUYA SCAMBLE SQUARE」の字が書いてあるので、渋谷だということがわかります。
西武デパート・丸井デパート(渋谷モディ)等の位置関係から、ここが渋谷パルコであるとわかりました。
ところで、この建物は何回か建て替わっているのですが[2]、時系列順をさかのぼって全通り試してみたところ、一番古いものがflagとなっていました。
TsukuCTF22{1973/06/14}
Gorgeous Interior Bus (433pts)
チームメイトから「銀座だよ」という伝言をもらって解き始めました。
銀座を走るおしゃれなバスを総当たりしようとしたのですが、似ているものがありませんでした。
諦めて写真上部の「ルートマップ」を見てみると、「〇〇ンスパあたみ」の字を発見しました。(ここで「銀座じゃないなぁ」と気づきました。)
「ンスパあたみ」で検索をかけると、「湯~遊~バス」という周遊バス(ネーミングセンスが良い)の停留所に「マリンスパあたみ」とありました。
ルートマップとにらめっこすると、マリンスパあたみの
すなわち、この写真は銀座ーサンビーチ間で撮影されたものであり、google mapで確認すると、その間に名前の付いた交差点が
TsukuCTF22{東海岸町}
Bringer_of_happpiness (446pts)
チームメイトから「移っている電車は島原鉄道」という情報をもらって解き始めました。
駅前にパチンコ屋があったので、「島原鉄道 パチンコ J」と適当に検索したところ、ここが「J-コースト」というパチンコ屋だとわかりました。
ホームページ曰く[3]、撮影地点が「島原外港駅」前であることがわかり、ストリートビューを利用して厳密な撮影地点を探しました。
TsukuCTF22{32.7691-130.3706}
uTSUKUSHIi (499pts)
映っている猫は、猫カフェの猫っぽいことがインテリアからわかります。
黄色が特徴の猫カフェに見えたので、「黄色 猫カフェ(都市)」という形でググりました。
問題の撮影地点が局所的に感じたので、都市は、「札幌・東京・名古屋・福岡・京都」を候補として検索しました。
すると、「京都」のタイミングで「猫カフェMOCHA京都河原町店」という、内装が似ている猫カフェを発見しました。
ホームページ[4]から猫の一覧を眺めていると、似ている猫を発見しました。
提出制限がなかったので、躊躇なく試してみたところ、一発で正解を引き当てました。
TsukuCTF22{2021/09/16}
頑張った問題
[OSINT]
- what_time_is_it (495pts)
- FlagDM (500pts)
[Misc]
- Lucky Number 777(498pts)
- nako3ndbox(500pts)
what_time_is_it (495pts)
残念ながら提出制限を超過してしまいました。非常に残念です。(まぁでも提出制限が無かったら1440通り試せばいいだけなので、妥当かなぁ)
画像から、「JRの特急である」「始点か終点駅である」「2602という数字がある」ことがわかりました。
2600系は、現在「特急うずしお」として高松ー徳島間で一日3,4往復程度運行されていうということが調査によってわかりました。
また、徳島駅をgoogle mapで確認すると、写真奥の建物にそっくりな建物を見つけたので、ここだと断定しました。
ここで、flagは3, 4択に絞れたので、このサイト[5]を見ながら手あたり次第全部提出してみたのですが、提出してから「このデータが旧ダイヤである」ことにきづきました(Oh...)
flagDM (500pts)
与えられた画像からgoogleドキュメントの共有ページにたどり着きました。
xeuledocを利用してこのドキュメントからgmailアドレスの特定をしました。
> xeuledoc https://docs.google.com/document/d/1y266JcI1E8piugLQDPaK7boSzAKykg4FepQZIOt4Phg/edit
Document ID : 1y266JcI1E8piugLQDPaK7boSzAKykg4FepQZIOt4Phg
[+] Creation date : 2022/10/03 12:18:33 (UTC)
[+] Last edit date : 2022/10/03 12:29:36 (UTC)
Public permissions :
- reader
[+] Owner found !
Name : my real name is secret
Email : [mpju40nchoyba85@gmail.com](mailto:mpju40nchoyba85@gmail.com)
Google ID : 03458870179467391774
ghuntを利用して、このアカウントでgoogle mapの口コミを利用したことを発見しました。
> python3 ghunt.py email mpju40nchoyba85@gmail.com
[+] 1 account found !
---
Name : my real name is secret
[+] Custom profile picture !
=> [https://lh3.googleusercontent.com/a-/ACNPEu_leXrOIIzCIna7Jx_LcstS9GGLCDF8HfbnQ-rS](https://lh3.googleusercontent.com/a-/ACNPEu_leXrOIIzCIna7Jx_LcstS9GGLCDF8HfbnQ-rS)
Profile picture saved !
Last profile edit : 2022/10/04 17:21:29 (UTC)
Email : [mpju40nchoyba85@gmail.com](mailto:mpju40nchoyba85@gmail.com)
Gaia ID : 117114600888142762916
Hangouts Bot : No
[-] Unable to fetch connected Google services.
[-] YouTube channel not found.
Google Maps : [https://www.google.com/maps/contrib/117114600888142762916/reviews](https://www.google.com/maps/contrib/117114600888142762916/reviews)
[-] No reviews
Google Calendar : [https://calendar.google.com/calendar/u/0/embed?src=mpju40nchoyba85@gmail.com](https://calendar.google.com/calendar/u/0/embed?src=mpju40nchoyba85@gmail.com)
[-] No public Google Calendar.
Google Docs
GIFT
We have a gift for you :) ⚠️WARNING⚠️ You visited our adult site yesterday!! You have to pay 294000 JPY. Please pay into the following bank account. Tsuku Banks XXXX-XXXX-XXXX-XXXX Failure to pay will result in legal action. Have a nice day 👋
投稿されている画像より、twitterのidを発見しました。
twitterのプロフィールからyoutubeアカウントを発見しました。
このyoutubeアカウントに紐づけられているgmailアドレスと、googleドキュメントのgmailアドレスが違うかもしれないと思い、もう一度ghuntにかけてみたのですが、新たな情報は得られませんでした。
> python3 ghunt.py youtube https://www.youtube.com/channel/UCZ7_GtoaC4oHCKBLhJi13Ww/about
📌 [Youtube channel]
[+] Channel name : gross_poem
[-] No interesting snapshot found.
[-] Email on profile : not available.
🧬 Total views : 30
🧬 Joined date : Oct 3, 2022
このへんで時間切れになってしまいました。
試行錯誤ができそうな箇所としては
- 非公開になっているgoogle calenderを、どうにかして見る
- 非公開になっているgoogle mapの口コミを、どうにかして探す
- youtubeから得られている情報があまりにも少なすぎるので、もう少し探す
といったものが挙げられると思います。
にしても、公開されたドキュメントだけで、こんなに情報が得られるなんて、非常に恐ろしいですね。
Lucky Number 777 (498pts)
import string
def challenge(lucky_number: str):
flag = "TsukuCTF22{THIS_IS_NOT_FLAG}" # TOP SECRET
printable = string.printable
filter = "_[].,*+%: |()#\\\t\r\v\f\n" # ( ̄ー ̄)
if not all(c in printable for c in lucky_number):
return "No Hack!!!"
if any(c in filter for c in lucky_number):
return "No Hack!!!"
if lucky_number == "flag" or "{flag}" in lucky_number:
return "No Hack!!!"
try:
return "your lucky_number is " + str(eval(lucky_number))
except:
return "No Hack!!!"
eval関数が穴なので、そこを駆使してflagを出力させるところまではわかったのですが、filterの制約がきつすぎて、突破することができませんでした。
nako3ndbox (500pts)
「なでしこ 脆弱性」で調べると、「圧縮・展開操作でOSコマンドインジェクションが起こせる」[^6]ということが分かったので、山を張って試行錯誤したのですが、問題の環境に7zipがインストールされていなくて実行できませんでした。
まとめ
知り合いが作問陣にいた ⋀ よくwrite-upを書いていらっしゃる強い方が参加されていたので、久しぶりに土日をCTFに費やしてみたのですが、問題の質も高く、楽しかったです。
CTFは復習が本番だと思っているので、上位の皆さんのwrite-upを楽しみに待っています。
Discussion