シアン化備忘録

技術系とか諸々

TsukuCTF 2023 Writeup

Kawaii Raz0r Bladesでソロ参加し、18位でした。


OSINT

airport

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

Google Lensに投げるとブログが見つかる。

ブログを参考に伊丹空港のレターコードであるITMを入れると正解。

TsukuCTF23{ITM}

castle

この前、お城に行ってこの写真を取ってきたんだ!
どこにあるかわかるかい?
ラグのフォーマットは、TsukuCTF23{緯度_軽度} です。
小数点は第三桁まで有効とします。

Google Lensに投げると姫路にある太陽公園であることが分かる。

Google Mapを参考に緯度経度を調整して提出。

TsukuCTF23{34.886_134.630}

eruption

つくしくんは旅行に行ったときに噴火を見ました。噴火の瞬間を実際に見たのは初めてでしたが、見た日付を覚えていません。
つくしくんが噴火を見た日付を写真の撮影日から特定して教えてください。
撮影場所が日本なのでタイムゾーンはJSTです。フラグの形式は TsukuCTF23{YYYY/MM/DD} です。

Google Lensに投げると、似た画像が掲載されているブログを発見。

どうやらJANOG49 in 鹿児島の開催期間中に噴火したとのことなので、Xで「JANOG 噴火」で検索すると2022年1月28日であることが分かる。

TsukuCTF23{2022/01/28}

location_for_what

とある場所を友達と探索していると、「ここ、何かの映画の聖地だった気がするけど、名前忘れちゃった......」とのこと。
シュッと特定して教えてあげよう!
Flagの形式は TsukuCTF23{映画のタイトル} です。

画像サイズが大きかったので一部を切り抜いています。

Google Lensに投げると、こちらのブログを発見。

言の葉の庭だそう。今度見てみようかな。

TsukuCTF23{言の葉の庭}

green_bridge

この写真が撮影されたのはどこですか...?
Flagフォーマットは TsukuCTF23{緯度_経度} です。
端数は少数第4位を四捨五入して小数点以下第3位の精度で回答してください。

画像サイズが大きかったので一部を切り抜いています。

Google Lensに投げると、こちらのブログからもみじ谷大橋であることが分かる。

Google Mapで写真の地形を見ながら、それらしい緯度経度を提出すると正解。

TsukuCTF23{36.956_139.880}

perfume

とある施設でいろいろな香水を見かけたが、施設の場所が思い出せない。
この施設の場所を調べ、教えてほしい。
ラグはTsukuCTF23{緯度_経度}であり、小数点第三桁まで有効である。

Google Lensに投げると、こちらのブログから大分香りの博物館であることが分かる。

Google Mapで調べて緯度経度を提出。

TsukuCTF23{33.311_131.488}

mab

mab.main.jpが使用しているレンタルサーバサービスを特定し、そのWebサイトのドメイン名を答えてください。
Flagフォーマットは TsukuCTF23{ドメイン名}です。

nslookupでIPを正引きしてShodanにかけるだけ。

TsukuCTF23{https://lolipop.jp}

tsukushi_estate

つくし君が写真に写っているビルにオフィスを構えたいらしいのだけど、築年数が少し心配......
つくし君の代わりに調査してください!
Flagの形式は TsukuCTF23{築年_月} です。
例えば、2022年3月に出来たビルであれば、 TsukuCTF23{2022_03} になります。

つくし不動産の公式サイトに飛んで、貸オフィスの一覧を見てみると写真と似た物件を発見。

築年月を見て提出。

TsukuCTF23{1983_03}

travel_with_tsukushi

旅が好きなつくしくんは、空港の写真からそれがどこの空港かすぐにわかります。
つくしくんからの挑戦状!
これがどこの空港かわかるかな?
Flagフォーマットは TsukuCTF23{空港の3レターコード(IATA)} です。

Google Lensに投げるとこちらのブログを発見。

クアラルンプールであることが分かるので、クアラルンプール空港のレターコードであるKULを提出して正解。

TsukuCTF23{KUL}

kiZOU

ここは日本で一番のリゾート地!少し歩くと目の前に素敵な像が見えたから写真を撮ったつもりだったんだけど、
見返したら端っこしか写ってない!困ったなぁ、この像についてもっと知りたかったんだけどなぁ。
僕の代わりにこの像について調べてくれないか?
ラグ形式は TsukuCTF23{像を寄贈した人物の名前} です。

画像をよく見ると、au style NAHAという文字が見つかり、那覇auショップであることが分かる。

また、au style NAHAで検索すると、パレット久茂地に店を構えていることも分かる。

ストリートビューで見てみるとシーサー像を発見。

「パレット久茂地 シーサー像」で検索するが寄贈者は見つからなかったので、Xで改めて調べるとこちらのツイートが見つかる。

TsukuCTF23{上原清善}

big_statue

大きなドリアンだ!どこにあるんだろう??
ラグの形式は TsukuCTF23{緯度_経度} です。
例えば、この像が東京の渋谷駅にある場合、フラグは TsukuCTF23{35.6580_139.7016} となります。

Google Lensに投げても見つからなかったので、画像で見える「榴梿王 利陞」を検索してみると、Lexas Durian KingのFacebookが見つかる。

また、こちらのTikTokから店の前に画像のドリアン像があることが分かる。

よって、ストリートビューからドリアン像の位置の緯度経度を取得する。

草に紛れて見にくい

TsukuCTF23{1.3623_103.8872}

TrainWindow

夏、騒音、車窓にて。
ラグのフォーマットは、TsukuCTF23{緯度_経度}です。
緯度経度は小数第五位を切り捨てとします。

Google Lensにかけると、熱海であることは分かるが詳細な位置までは分からない。

ただ、こちらのブログより、網代駅付近であることが分かる。

よって、熱海~網代駅までの路線沿いで画像と似たような風景になる場所をストリートビューを手掛かりに探すとここがヒット。

TsukuCTF23{35.0641_139.0666}

CtrlAltPrtSc

仕事中にCtrl + Alt + PrtScでウィンドウのスクリーンショットを撮ったよ。
つくし君がサボって使用していたサービスの名前を答えよ。 フラグはTsukuCTF23{サービスの名前}の形式です。

サボって利用するサービスということと左上のロゴと文字よりYoutubeと推測するとフラグだった。

これ勘以外の解き方あるんですか

TsukuCTF23{Youtube}

laser

光源の座標を正確に教えてください。
ラグフォーマットは、TsukuCTF23{緯度_経度}です。 小数点以下5位を切り捨てて、小数点以下4桁で答えてください。

範囲を調整しながらGoogle Lensで調べると、こちらのツイートが見つかる。

リプライで梅田換気塔に設置された光源であることが分かる。

こちらのサイトを参考にしながらGoogle Mapから座標を調整して提出。

TsukuCTF23{34.7016_135.4990}

3636

ここはどこ...?
Flagフォーマットは TsukuCTF23{緯度_経度} です。
端数は少数第四位を四捨五入して小数点以下第三位の精度で回答してください。

適当に「3636 電話番号 ed jp」で検索すると、とうみょうこども園がヒットする。

ストリートビューで近辺を探索すると、この場所であることが分かる。

ちょうど看板の場所になるように緯度経度を調整して提出。

TsukuCTF23{37.501_139.928}

Yuki

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

範囲を調整してGoogle Lensに投げると、定山渓という札幌の温泉地であることが分かる。

観光サイトの宿泊施設をMapなども見ながら調べていくと、定山渓ビューホテルが地形的に画像と近いことが分かる。

また、ホテル内のカフェ サンリバーというカフェの画像が室内の机、椅子と一致していることが分かる。

Google Mapを見ながら緯度経度を調整して提出。

TsukuCTF23{42.968_141.167}

tsukushi_no_kuni

かつて、筑紫国を統治していた国造の一人が乱を起こした。
その子孫の一人が、ある天皇と同一人物である説が提唱されている。
その子孫の名前を TsukuCTF23{} で囲んで答えよ。

筑紫国 国造 乱」で検索すると磐井の乱が見つかり、筑紫君磐井という人物が起こしていることが分かった。

「筑紫君磐井 子孫 天皇」で適当に複数記事を回ると、このブログ天武天皇についての記載が散見される。

よく分からないが適当に天武天皇で提出するとフラグだった。提唱されているソースが何処なのかは不明。

TsukuCTF23{天武天皇}

free_rider

https://www.fnn.jp/articles/-/608001
私はこのユーチューバーが本当に許せません!
この動画を見たいので、元のYouTubeのURLを教えてください。
また、一番上の画像(「非難が殺到」を含む)の再生位置で指定してください。
ラグフォーマットは、
TsukuCTF23{https://www.youtube.com/watch?v=REDACTED&t=REDACTEDs}

外国人の新幹線無賃乗車動画の元動画のURLを探す問題。

「新幹線 無賃乗車 動画」で検索すると、この記事からFidiasというYoutuberであることが分かる。

元動画のタイトルを知りたいため、「Fidias Japan Travel」で調べるとこの記事から、"I Travelled Across Japan For Free"という動画であることが分かった。

消される前にツイートで拡散されているだろうと推測し、Xで「I Travelled Across Japan For Free」で調べるとツイートが見つかり、動画が消去されていることからこれが元動画のURLであると推測。

次に再生位置を知りたいが、この手の炎上動画は大抵第三者に再投稿されているので、Googleでタイトルを調べると再投稿された動画が見つかる。

問題文の記事と同じ部分は2:56 = 176sであることが分かるため、https://www.youtube.com/watch?v=Dg_TKW3sS1U&t=176sがフラグ。

TsukuCTF23{https://www.youtube.com/watch?v=Dg_TKW3sS1U&t=176s}

river

弟のたくしから、「ボールが川で流されちゃった」と写真と共に、連絡がきた。
この場所はどこだ?
Flagフォーマットは TsukuCTF23{緯度_経度} です。
端数は少数第5位を切り捨てて小数点以下第4位の精度で回答してください。

画像サイズが大きかったので一部を切り抜いています。

タコ負けして最近パチ禁をしているはずなのですが、ニューギンの専用駐車場が真っ先に目についたのでこれを手掛かりに見ていく。

ニューギンの会社概要から支店や営業所の住所をGoogle Mapで見ていくと、周りの風景から鹿児島営業所であることが分かる。

Google Mapから緯度経度を調整し、よっしゃあ漢唄を歌いながらフラグを提出。

TsukuCTF23{31.5757_130.5533}

broken display

表示が壊れているサイネージって、写真を撮りたくなりますよね!
正しく表示されているときに書かれている施設名を見つけて提出してください!
ラグ形式: TsukuCTF23{◯◯◯◯◯◯◯◯IYA_◯◯◯◯◯◯S}

後ろの方に日能研と駅のようなものが見える。

よって、〇〇宮かつローマ字表記での文字数が一致する地名 + 駅前に日能研がある場所を探していく。

地名コレクション日能研の教室案内を見ていくと、西宮が見つかる。

「NISHINOMIYA」で検索すると西宮ガーデンズというショッピングセンターが見つかり、ローマ字表記の文字数が一致するためここであると推測し、提出。

TsukuCTF23{NISHINOMIYA_GARDENS}

stickers

この画像が撮影された場所を教えてください!
Flagフォーマットは TsukuCTF23{緯度_経度} です。
ただし、小数点4桁の精度で答えてください。

画像サイズが大きかったので一部を切り抜いています。

Google Lensに投げても何も出てこない。

千社札らしきものが貼られており熱海プリンのプリンカーが写っていることから、熱海の神社を中心に探していくが、全く見つからない。

また、背景に「CI EC」が見えるのでそれらしき企業も探すが何も出てこない。(どうやらFUJITECだったみたいです。)

仕方ないので、もう一度Google Lensを用いて画像 + 熱海で検索すると、熱海七湯 河原湯が見つかる。

Google Mapより緯度経度を調整して提出。

TsukuCTF23{35.0967_139.0747}

RegexCrossword

クロスワードを解いてみて!
これを作った会社の本社の郵便番号をハイフンありで答えてね!!

Google Lensで調べても出てこない。

何らかのグッズ?か備品であると推測し、Xで「正規表現 クロスワード」と検索すると、このツイートが見つかる。

記載されているブログから会津大学の学食のナプキンであることが分かる。

もう一度Xで「会津大学 正規表現 クロスワード ナプキン」で検索すると、このツイートからEyes,Japanが制作したことが分かるので、Google検索で「Eyes,JAPAN」と検索し、出てきた郵便番号がフラグ。

TsukuCTF23{965-0872}

flower_bed

花壇の先にQRコードのキューブがあるようですね。友人曰く、モニュメントの近くに配置されているものらしいです。
こちらのQRコードが示すURLを教えてください! リダイレクト前のURLでお願いします!
Flagの形式は TsukuCTF23{URL} です。例えば、https://sechack365.nict.go.jp がURLなら、
TsukuCTF23{https://sechack365.nict.go.jp} が答えになります。

画像サイズが大きかったので一部を切り抜いています。

QRコードが書いてある面に、「〇〇 Prefectual Civil Hall and 〇〇 House Official Site」という文章がある。

Googleで「Prefectual Civil Hall and House Official Site」と調べると、旧福岡県公会堂貴賓館公式サイトが見つかる。

ただしこのURLがフラグではなかったため、もう少し調査する必要がある。

Google Mapを見てみると、近くにFUKUOKAモニュメントというモニュメントが存在し、問題文からこの近くで撮影されていることが分かる。

与えられた画像ではよく分からなかったが、どうやら立体のモニュメント上にQRコードが存在しているらしく、モニュメントを右側から撮影した画像からQRコードを読み取れれば良さそう。

一応このツイートが見つかるが、解像度が低く読み取れない。

仕方ないので、unlimited:waifu2xで無理やり4倍に拡大させるとうまくQRコードを読み込むことが出来た。

CPUに悲鳴を上げさせて作成した拡大QRコード

TsukuCTF23{http://www.fukuokaken-kihinkan.jp}

grass_court

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

テニスコートだけでは特定出来なさそうなので、後ろにあるパラボラアンテナに注目する。

画像+パラボラアンテナでGoogle Lensで検索すると、水沢VLBI観測所がヒットする。

Google Mapで見てみると、風の又三郎テニスコートとテニスコート前の木の本数からここであると推測し、画像から緯度経度を調整して提出。

TsukuCTF23{39.1350_141.1325}

fiction

「座標を教えてくれ」
ラグフォーマットは、TsukuCTF23{緯度_経度}です。
小数点以下5位を切り捨てて、小数点以下4桁で答えてください。

何故VALORANT?と思いながらGoogle Lensに投げる。

すると、Sunsetというマップであることが分かる。(最近やってないので本当に知らんかった)

fandomを見ると座標である34°2'2" N 118°12'16" Wが見つかる。

どうやら実際の地域をモデル?にしているらしく、Google Mapに座標を張り付けて検索すると緯度経度が分かるので提出。

TsukuCTF23{34.0338_-118.2044}

hunter

名前をメールで聞こうとしたところ、相手のGmailの一部が分からなくなってしまいました。
大変お忙しいところ恐縮ですが、暇なときに調査してください。
qeinijo#iby#@gmail.com
# が不明な部分です。
なお、外部サービスに短期間で多くのアクセスをしないようにしてください。

正確なメールアドレスが分からないのでEpieosなども使えなさそう。

ということでgmailのメールアドレスに利用可能な文字(小文字アルファベット + 数字 + .)で有り得る37*37=1369通りのメールアドレスのリストを作成する。

GHuntを用いてリスト内のメールアドレスを調べ、有効なアカウントが見つかるまでループさせるスクリプトを作成した。

有効でないメールアドレスは、The target wasn't found.と出力されるだけであり、有効な場合はGoogleの各アクティビティが表示される。

よって、出力内の"Google"という文字の有無で判定させた。

import string

ALPHA = string.ascii_lowercase + string.digits + "."

email = ""

with open("email_list.txt","wt") as f:
    for a1 in ALPHA:
        for a2 in ALPHA:
            email = "qeinijo" + a1 + "iby" + a2 + "@gmail.com" + "\n"
            f.write(email)
import time
import os

email_list = []
with open("email_list.txt") as f:
    for line in f:
        email_list.append(line.rstrip())

for mail in email_list:
    print(mail)
    time.sleep(1)
    process = os.popen("ghunt email " + mail)
    ret = process.read()
    process.close()
    if "Google" not in ret:
        continue
    else:
        print(ret)
        break

40~50分ぐらい回すと、qeinijo.iby8@gmail.comが有効なアカウントであり、出力内のName欄にフラグであるTsukuCTF23{GHun7_i5_u5efu1}が見つかる。

TsukuCTF23{GHun7_i5_u5efu1}

twin

ハッカーは独自に収集した大量の個人情報を、とあるWebサイト上で2023年11月23日に投稿した。
我々はこの投稿IDがKL34A01mであるという情報を得た。ハッカーGitHubアカウントを特定せよ。

ダークウェブ要素は恐らくないであろうこと、ハッカー・投稿・個別IDからPastebinと推測。

Pastebinに飛ぶと投稿が見つかる。

GEMINI6512の他の投稿を見ると、ruby製のクワインが見つかるが、プログラム自体を調べてもあまり意味はなさそう。

githubアカウントを特定出来ればいいので、githubリポジトリにそのまま投稿されてるのではと推測し、githubで"Tsuine"と検索するとリポジトリがヒット。

そのままgithubアカウントを提出すればOK。

TsukuCTF23{gemini5612}

First Bloodでした:)

Web

basic

保護されていない通信ではパスワードはまる見えダゾ!
e.g. パスワードが Passw0rd! の場合、フラグは TsukuCTF23{Passw0rd!} となります。"

pcapファイルが渡される。

basic認証だろうと当たりをつけてHTTPストリームを見ると、AuthorizationにBase64エンコードされている認証情報が見つかる。

Cyberchefで復号してパスワードを提出。

TsukuCTF23{2929b0u4}

misc

what_os

とある研究所から、昔にシェル操作を行った紙が送られてきた来たんだが、
なんのOSでシェルを操作しているか気になってな。
バージョンの情報などは必要ないから、OSの名前だけを教えてくれないか?
にしても、データとかではなく紙で送られて来たんだ。一体何年前のOSなんだ。。。
送られてきた紙をダウンロードして確認してほしい。

シェル操作をしている様子のテキストファイルが配布される。

適当にas2 getty glob init msh passwd std0とかで検索すると、unix-jun72というGoogle Code Archiveが見つかる。

unix-jun72で調べると、こちらの記事がヒット。

UNIX 1st editionってことはUNIX?と推測し提出すると正解だった。

TsukuCTF23{Unix}

build_error

怪盗シンボルより、以下の謎とき挑戦状が届いた。
怪盗シンボルだ!
メールに3つのファイルを添付した。
この3つのファイルを同じディレクトリに置き、makeとシェルに入力し実行するとビルドが走るようになっている。
ビルドを行い、標準出力からフラグを入手するのだ!
追記:ソースコードは秘密
怪盗シンボルはせっかちなので、ビルドできるかチェックしているか不安だ。。。 取りあえずチャレンジしてみよう。
FlagフォーマットはTsukuCTF23{n桁の整数}になります。

Makefile, main.o, one.oというファイルが渡される。

普通にmakeしても失敗するので、オブジェクトファイルをghidraでデコンパイルしてみる。

undefined8 main(void)

{
  int local_34;
  long local_30;
  long local_28;
  long local_20;
  
  local_30 = 0xc;
  local_28 = 0xb;
  local_20 = 0x4b;
  one_init();
  for (local_34 = 0; local_34 < local_28; local_34 = local_34 + 1) {
    if (local_34 < local_30) {
      local_20 = local_20 + 1;
    }
    if (local_20 < local_34) {
      local_28 = local_28 + 1;
    }
    local_30 = local_30 + 1;
  }
  local_20 = local_20 + local_30 + local_28;
  if (local_20 == c + a + b) {
    printf("flag is %ld\n",local_20);
  }
  else {
    puts("please retry");
  }
  return 0;
}
void one_init(void)

{
  int local_c;
  
  a = 0xc;
  b = 0xb;
  c = 0x4b;
  for (local_c = 0; (ulong)(long)local_c < b; local_c = local_c + 1) {
    if ((ulong)(long)local_c < a) {
      c = c + 1;
    }
    if (c < (ulong)(long)local_c) {
      b = b + 1;
    }
    a = a + 1;
  }
  return;
}

ビルド出来るように弄らなくてもそのままPythona+b+cを求めた方が楽そうなので再現コードを書いてフラグを求める。

def one_init(a,b,c):
    a = 0xc
    b = 0xb
    c = 0x4b
    i = 0

    for i in range(b):
        if i < a:
            c += 1

        if c < i:
            b += 1

        a += 1

    return a,b,c


a,b,c = one_init(0,0,0)
flag = a+b+c

print("TsukuCTF23{" + str(flag) + "}")

TsukuCTF23{120}

content_sign

どうやら、この画像には署名技術を使っているらしい。
この署名技術は、画像に対しての編集を記録することができるらしい。
署名技術を特定し、改変前の画像を復元してほしい。
Flag形式はTsukuCTF23{<一個前に署名した人の名前>&<署名した時刻(ISO8601拡張形式)>}です。
例えば、一個前に署名した人の名前は「Tsuku」で、署名した時刻が2023/12/09 12:34:56(GMT+0)の場合、
ラグはTsukuCTF23{Tsuku&2023-12-09T12:34:45+00:00}です。
なお、タイムゾーンはGMT+0を使用してください。

exiftoolで与えられたpngファイルを見てみると、c2paという文字が散見される。

どうやら画像の認証を行う技術規格だそう。

c2patoolというツールで署名を見てみると2つ署名が見つかるが、改変前の画像の復元なので時間が早い1つ目の署名を答えれば良い。

1つ目の署名

2つ目の署名

1つ目の署名者はTSUKU4_IS_H@CKERであることが分かるので、1つ目の署名の時刻と組み合わせてフラグ。

TsukuCTF23{TSUKU4_IS_H@CKER&2023-12-08T13:00:26+00:00}