2023年12月9日から10日にかけて開催されたTsukuCTF2023にtraPのCTF班でチームとして参加しました。
結果は上の通り4位で「CTFつよつよで賞」をいただきました。
OSINT問を全て解き切ることができたので嬉しかったです。
目次
- [web] basic
- [web] MEMO wow
- [osint] airport
- [osint] castle
- [osint] eruption
- [osint] location_for_what
- [osint] green_bridge
- [osint] perfume
- [osint] mab
- [osint] tsukushi_estate
- [osint] travel_with_tsukushi
- [osint] kiZOU
- [osint] big_statue
- [osint] TrainWindow
- [osint] CtrlAltPrtSc
- [osint] laser
- [osint] 3636
- [osint] Yuki
- [osint] tsukushi_no_kuni
- [osint] free_rider
- [osint] river
- [osint] broken display
- [osint] stickers
- [osint] RegexCrossword
- [osint] flower_bed
- [osint] koi
- [osint] grass_court
- [osint] fiction
- [osint] hunter
- [osint] twin
- [osint] sunset
- [osint] udon_2023
- [misc] what_os
- [misc] build_error
- [misc] content_sign
- [rev] title_screen
- [crypto] new_cipher_scheme
web
[web] basic
保護されていない通信ではパスワードはまる見えダゾ!
pcapファイルが与えられるのでパスワードを抜くことが目標です。しかし、認証がベーシック認証なので、認証を行っている通信の中に普通にテキストで書いてありました(No.24のAuthorization)
TsukuCTF23{2929b0u4}
[web] MEMOwow
素晴らしいメモアプリを作ったよ。
覚える情報量が増えているって???
base64した結果が////////////flag
になるようなメモを作成すればよいのですが、メモを読む際に、(b"flag" in filename.lower())
というチェックが入るので、そのままでは取得することができません。そこで、リクエスト時は////////////fl@ag
をリクエストすることで取得できました(@
はdecode時に単に無視されます)
$ curl -c cookie.txt http://133.130.100.34:31415/
$ curl -c cookie.txt -b cookie.txt -X POST -d
$ curl -c cookie.txt -b cookie.txt -X POST -d 'memoid=////////////fl@ag' http://133.130.100.34:31415/read
TsukuCTF23{b45364_50m371m35_3xh1b175_my573r10u5_b3h4v10r}
osint
[osint] airport
つくしくんは、旅の思い出を振り返っていましたが、この写真はどこの空港かわからなくなりました。
ここはどこの空港か教えてくれませんか?
Flagフォーマットは TsukuCTF23{空港の3レターコード(IATA)} です。
写っているのはANAのプロペラ機なので、ANAのプロペラ機があるところを下のリンクを参考に総当たりしました。
その結果伊丹空港とわかりました。
https://syachikuai.com/2019/01/13/japan-airlines-propeller/
TsukuCTF23{ITM}
[osint] castle
この前、お城に行ってこの写真を取ってきたんだ!
どこにあるかわかるかい?
画像検索で兵庫県にある太陽公園とわかったので、その中の城のエリアの座標を入力しました。
[osint] eruption
つくしくんは旅行に行ったときに噴火を見ました。噴火の瞬間を実際に見たのは初めてでしたが、見た日付を覚えていません。
つくしくんが噴火を見た日付を写真の撮影日から特定して教えてください。
撮影場所が日本なのでタイムゾーンはJSTです。
この画像のexifデータを見たところ撮影日時が消されていなかったので、それで特定できました。
TsukuCTF23{2022/01/28}
[osint] c
とある場所を友達と探索していると、「ここ、何かの映画の聖地だった気がするけど、名前忘れちゃった......」とのこと。
シュッと特定して教えてあげよう!
画像検索するとすぐに「言の葉の庭」の聖地であるということがわかりました。
TsukuCTF23{言の葉の庭}
[osint] green_bridge
この写真が撮影されたのはどこですか...?
画像検索すると、似た構図の写真が見つかるのでもみじ谷大橋とわかりました。そこで、ストリートビューで画角を揃えて、座標を特定しました。
[osint] perfume
とある施設でいろいろな香水を見かけたが、施設の場所が思い出せない。
この施設の場所を調べ、教えてほしい。
画像検索すると、同じエジプトの香水びんを撮った写真がみつかり、大分香りの美術館とわかりました。
[osint] mab
mab.main.jpが使用しているレンタルサーバサービスを特定し、そのWebサイトのドメイン名を答えてください。
main.jp
についてwhoisをすると、GMOペポパが運営しているということがわかりました。そこで、GMOペポパが運営しているレンタルサーバーサービスである、ロリポップ!のドメインlolipop.jp
を入力しました
TsukuCTF23{lolipop.jp}
[osint] tsukushi_estate
つくし君が写真に写っているビルにオフィスを構えたいらしいのだけど、築年数が少し心配......
つくし君の代わりに調査してください!
つくし不動産の物件一覧をしらみつぶしに見ると、看板が一致する物件が見つかったので、物件詳細を見て、築年月を特定しました。
TsukuCTF23{1983_03}
[osint] travel_with_tsukushi
旅が好きなつくしくんは、空港の写真からそれがどこの空港かすぐにわかります。
つくしくんからの挑戦状!
これがどこの空港かわかるかな?
手前二つの航空機がエア・アラビアとバティック・エアのものであることから両方が就航してる空港を探しました。
すると、クアラルンプール国際空港とチェンナイ国際空港だけだったので、両方試そうとしてクアラルンプールを入れたら通りました。TsukuCTF23{KUL}
[osint] kiZOU
ここは日本で一番のリゾート地!少し歩くと目の前に素敵な像が見えたから写真を撮ったつもりだったんだけど、見返したら端っこしか写ってない!困ったなぁ、この像についてもっと知りたかったんだけどなぁ。僕の代わりにこの像について調べてくれないか?
iPhoneのポスターの右側のガラスをよく見るとau style NAHAと書いてあるので場所が分かります。
グーグルマップで見るとパレット久茂地という施設にあるらしいので,パレット久茂地 銅像
で調べるとシーサー像であることが分かり、さらにパレット久茂地 シーサー 寄贈
で調べると上原清善が寄贈したということがわかりました。TsukuCTF23{上原清善}
[osint] big_statue
大きなドリアンだ!どこにあるんだろう??
像の上の文字、榴莲王 利陞
を検索すると場所が特定できるので、少し座標を調整したら通りました。
[osint] TrainWindow
夏、騒音、車窓にて。
画像中央にTTCと書かれたビルがあるので調べると、熱海市のTTC社ビルだとわかります。
あとは航空画像で位置を調整して出しました。
[osint] CtrlAltPrtSc
仕事中にCtrl + Alt + PrtScでウィンドウのスクリーンショットを撮ったよ。
つくし君がサボって使用していたサービスの名前を答えよ。
画面の上の方にうっすらYouTubeのロゴが見えるので、それを提出しました。TsukuCTF23{YouTube}
[osint] laser
光源の座標を正確に教えてください。
ボケてしまって画像検索が効かなかったので、空 レーザー 緑
でググると大阪のイルミネーションの一部で換気塔から出されているとわかるので、その座標を提出しました。
[osint] 3636
ここはどこ...?
電話番号(?)が5-3636で終わりurlがo.ed.jpで終わる施設の看板とわかるので、ed jp 3636
でググるととうみょう子ども園が出てくるので、ストリートビューで周辺をうろつくと東の十字路に同じ看板があるのでそことわかります。
[osint] Yuki
雪、無音、窓辺にて。
画面の真ん中のあたりを画像検索に入れると、定山渓ビューホテルが出てくるので、googleマップで撮影したであろう位置を特定しました。
[osint] tsukushi_no_kuni
かつて、筑紫国を統治していた国造の一人が乱を起こした。
その子孫の一人が、ある天皇と同一人物である説が提唱されている。
その子孫の名前を TsukuCTF23{} で囲んで答えよ。
まず、筑紫国を統治していた国造を調べると、磐井氏であるとわかります。あとは、子孫として名前の上がっている人を片っ端からググると、筑紫君薩野馬のときに、筑紫君薩野馬って天武天皇何ですか?っていう知恵袋が出てきたのでこれで出しました。
[osint] free_rider
https://www.fnn.jp/articles/-/608001
私はこのユーチューバーが本当に許せません!
この動画を見たいので、元のYouTubeのURLを教えてください。
また、一番上の画像(「非難が殺到」を含む)の再生位置で指定してください
TwitterでYoutubeガイドライン違反の動画として通報呼びかけの投稿があり、そこに元動画のリンクがあります。しかし、元の動画は非公開になっているので、ググると転載動画があります。
転載動画のt=180sの部分が該当のシーンなので最初のカウントダウン分を引いてt=177sです。
[osint] river
弟のたくしから、「ボールが川で流されちゃった」と写真と共に、連絡がきた。
この場所はどこだ?
映り込んでるnewginという会社のオフィスを片っ端から調べて、周囲に川が通っているところを見つけて、ストリートビューで場所を確認しました。(googleマップで大きな道も川みたいな色になっていたので、何回か見間違えました。)
[osint] broken display
表示が壊れているサイネージって、写真を撮りたくなりますよね!
正しく表示されているときに書かれている施設名を見つけて提出してください!
反射でロクシタンが写ってるので、IYAをもとに日本のロクシタンを総当たりしました。TsukuCTF23{NISHINOMIYA_GARDENS}
[osint] stickers
この画像が撮影された場所を教えてください!
後ろに止まっている車が熱海プリンの車で、調べてみるとこの車は熱海プリンの各店舗にプリンを運んでいるということがわかります。そこで、ストリートビューでお店の周りをぐるぐるしてみると、2号店の裏の道を進んだところに熱海プリンの車が止まっていて、その先にこの札の貼られた小屋(?)が見つかりました。
[osint] RegexCrossword
クロスワードを解いてみて!
これを作った会社の本社の郵便番号をハイフンありで答えてね!!
クロスワードを一部解くと一番左の縦列に@nowhere.co.jp
と出てきて、nowhere.co.jp
は実在するので、その会社の郵便番号が答えになりました。TsukuCTF23{965-0872}
[osint] flower_bed
花壇の先にQRコードのキューブがあるようですね。友人曰く、モニュメントの近くに配置されているものらしいです。
こちらのQRコードが示すURLを教えてください! リダイレクト前のURLでお願いします!
どうやら、旧福岡県公会堂貴賓館であるということはすぐにわかりました。そこでここで撮られた他の写真を調べてQRを読み取りました。ただ、どうやら複数のQRコードが貼られているようで、何枚かの写真を試さないとflagに到達できませんでした。
TsukuCTF23{http://www.fukuokaken-kihinkan.jp}
[osint] koi
画像フォルダを漁っていると、鯉のあらいを初めて食べた時の画像が出てきた。
当時のお店を再度訪ね、鯉の洗いを食べたいが電話番号が思い出せない。
誰か、私の代わりにお店を調べ、電話番号を教えてほしい。
記憶では、お店に行く途中で見かけたお皿が使われていた気がする。。。
写っているのは、小石原焼なので、その産地で鯉の洗いを出しているお店を探したのですが見つからなかったので、福岡県まで大きくしてから、小石原焼に鯉の洗いを載せているお店をgoogleで探して発見しました。
TsukuCTF23{森口屋}
[osint] grass_court
しばらく使われていないテニスコートのようだ。
この日本にあるテニスコートの場所はどこだろう。
最初は手前にいるキャラクターを画像検索したのですが、見つからなかったので、左手に複数の電波望遠鏡が写っていることから、日本の電波望遠鏡の一覧を検索してgoogleマップで周囲を確認してvera水沢で発見しました。
[osint] fiction
「座標を教えてくれ」
画像検索するとvalorantのサンセットとわかりました。fandam valorant wikiに座標の設定が載っていたので、これで提出しました。
https://valorant.fandom.com/wiki/Sunset
[osint] hunter
名前をメールで聞こうとしたところ、相手のGmailの一部が分からなくなってしまいました。
大変お忙しいところ恐縮ですが、暇なときに調査してください。
qeinijo#iby#@gmail.com
#が不明な部分です。
なお、外部サービスに短期間で多くのアクセスをしないようにしてください。
とりあえず、pythonでsleepを挟みながらメールアドレス検証をして総当たりをしました。するとqeinijo.iby8@gmail.com
のみが生きていることがわかります。ここで、メールアドレスを提出しても不正解だったので、epieosというサービスで検索をすると、名前のところにflagが設定されていました。
[osint] twin
ハッカーは独自に収集した大量の個人情報を、とあるWebサイト上で2023年11月23日に投稿した。
我々はこの投稿IDがKL34A01mであるという情報を得た。ハッカーのGitHubアカウントを特定せよ。
ヒント
このWebサイトは28歳のオランダ人起業家によって2010年代初めに買収されている。
ヒントをもとに解こうとしたのですが、いまいち見つけられなかったので、経験値でpastebinやろ、と入力してみたら見つけられました。同じユーザーが投稿しているものにtsuineという名前のtsukuCTFのロゴを出すquineがあったので、これをgithubで検索すると、見つかりました。
TsukuCTF23{gemini5612}
[osint] sunset
TsukuCTF運営の1人であるshioが、今年に開催されたあるイベントが終わった後に夕日を撮影した。
この写真が撮影された日時を求めよ。
画像検索をすると新潟の西海岸公園とわかり、shioさんが新潟に行っていそうなのは、Twitterを見る感じ、セキュリティ・ミニキャンプ in 新潟 2023で9/10とわかりました。そこで、日の入りの時刻を提出したのですが、間違いと言われ、3回しか提出できないということがあり、とても緊張したのですが、少しずつ前に戻して行って、3回目の提出で無事正解しました。
TsukuCTF23{2023/09/10_17:56}
[osint] udon_2023
ここのうどん、麺だけじゃなく、鶏天も美味しい!!!
お店の場所を忘れたから、7文字のplus codeで教えて!!!
画像検索で同じ皿を見つけました。チェーン店なので、トッピング、机から店舗を絞り、肉讃岐 甚三うどん 高田馬場店と判明しました。TsukuCTF23{PP63+G6}
misc
[misc] what_os
とある研究所から、昔にシェル操作を行った紙が送られてきた来たんだが、 なんのOSでシェルを操作しているか気になってな。 バージョンの情報などは必要ないから、OSの名前だけを教えてくれないか?
にしても、データとかではなく紙で送られて来たんだ。一体何年前のOSなんだ。。。
送られてきた紙をダウンロードして確認してほしい。
渡されるテキストの中にある/etc/suftab
とか/usr/sys/maki.s
とかを調べると昔のUNIXの説明っぽいページが出てくるので入れてみたら当たりました。TsukuCTF23{UNIX}
[misc] build_error
怪盗シンボルより、以下の謎とき挑戦状が届いた。
怪盗シンボルだ!
メールに3つのファイルを添付した。
この3つのファイルを同じディレクトリに置き、makeとシェルに入力し実行するとビルドが走るようになっている。
ビルドを行い、標準出力からフラグを入手するのだ!
追記:ソースコードは秘密
怪盗シンボルはせっかちなので、ビルドできるかチェックしているか不安だ。。。 取りあえずチャレンジしてみよう。
MakeFileとオブジェクトファイル2つが与えられるのでビルドして標準出力を答える問題ですが、ビルドに失敗するのでどうにかするっぽいとわかりました。
aとbがローカル(ファイルスコープ)変数になっているのでmainから参照できず、リンクに失敗するので、.oを編集してグローバルに見せようとしましたが、上手くいきませんでした。なのでrevをして、自前でone.cを書いて答えを求めました。
long long a = 0xc, b = 0xb, c = 0x4b;
long long one_init() {
for (long long tmp = 0; tmp < b; ++tmp) {
if(tmp < a) { c += 1; }
if (c < tmp) { b += 1; }
a += 1;
}
return b;
}
TsukuCTF23{120}
[misc] content_sign
どうやら、この画像には署名技術を使っているらしい。この署名技術は、画像に対しての編集を記録することができるらしい。署名技術を特定し、改変前の画像を復元してほしい。 Flag形式はTsukuCTF23{<一個前に署名した人の名前>&<署名した時刻(ISO8601拡張形式)>}です。
編集の記録を残せる署名について調べてみると、CAIというadobeとかが勧めているものがあることがわかりました。そこで、ブラウザで中身をチェックするもので確認したのですが、秒までを見ることができませんでした。そこで、コマンドラインツール(https://opensource.contentauthenticity.org/docs/c2patool)をインストールして実行して中身を確認しました。
rev
[rev] title_screen
父は昔プログラマーだったらしい、
しかし、当時開発したソフトのタイトルが思い出せない。
ソフトを起動すると画面にタイトルが表示されるらしいのだが...
残っている開発データからなんとか導き出そう!
※実行結果として予想される表示文字列(記号含む)をフラグとして解答してください。
6502のアセンブリと思われるので、このあたりのページを参考に、真面目にアセンブリを読んでVRAM状態を復元しました。
mapping1が
for (int y = 11; y < 16; ++y) {
target = 0x2000 + 0x0020 * y;
for(int i =0; i < 0x14; ++i){ target[5+i] = 0x8c; }
}
mapping2が
target = 0x2000 + 13 * 0x0020
for (x=0,tmp=14; 0<tmp ;x+=1,tmp-=1) target[8+x] = data[x]
なことを使うと、yが11~15の領域に0x8cが書き込まれた長方形があり、そこの中央付近にmapping2で文字が書き込まれていると推測できます。
書き込まれた値が0xXYのとき、与えられた.bmpの中の縦X横Y個目(0-indexed)の画像を表示すると推測します(例えば0x22はT)。
整理すると TsuKushi_Quest
になるので、フラグは TsukuCTF23{TsuKushi_Quest}
です。
crypto
[crypto] new_cipher_scheme
I wouldn't worry about it being decrypted because of this complicated process!
magic2()=
より、
のr,s,nからp,qを求める問題になります。
p+qを求めるには8乗根を求めればいいので、平方根を3回使うとp+qが特定できます。(平方根は複数あるが、p,qが512bitよりp+qは513bitで、これに合うものは1つしかない) p+qとpqからpとqが特定でき、RSA暗号を復号できます。
感想
普段OSINTメインのCTFは少ないので、今回はとても楽しかったです。一方でGoogleレンズの威力を実感したので、作問の難しさを感じました。運営の皆さんありがとうございました。