TsukuCTF 2023 Writeup

※このwriteupには一部フラグをそのまま掲載しています。

 

TsukuCTF 2023

にうえきさんと参加させてもらいました!

結果です。うえきさんのツイートがよくまとまっていたので嬉々として載せます。

どうみてもキャリーして貰ってますね。

 

ここでは、私の担当分の問題+解けなかったけど考察を進めていた問題に関してのWriteupを書きます。後者に関しては、解けた方々や作問者の方がにやにやしながら読んでくれると解けなかった悔しさが浄化されます。

 

 

basic(web)

web問題の一問目でした。pcapファイルが渡されたので、Wiresharkで開きます。上からHTTP通信を眺めていくと、

いかにもな箇所がありました。本来ならエンコードされてないものを見れる箇所があったらしいのですが、Wiresharkの知識が無さ過ぎたのでbase64デコーダーにAuthorization:Basic......以下をかけました。コピペの方法もわからなかったので手打ちしました。admin:2929b0u4と出てきたのでフラグは

TsukuCTF23{2929b0u4}

ツクツクボウシ。TsukuCTFが始まった感あって幸先が良いです。

CtrlAltPrtSc(osint)

左上の方に

見慣れたアイコンがみえました。日ごろからバックグラウンドでYouTube流していたので勝ちです。

TsukuCTF23{YouTube}

ここにもつくし要素があって何か好き

laser(osint)

うえきさんがこのツイートの場所では?というところまで特定してくれていたのであやかりました。梅田でレーザーと言ったら梅田吸気塔です。レーザーの正確な光源の特定が必要らしいので、この記事のレーザーを真上から見た写真とGooglemapの航空写真を照らし合わせました。flagは忘れました。

eruption(osint)

「噴火 一度だけ」とかで検索していて当然引っかからず、一癖ありそうだなと放置していたeruption。開始してから少し経ち、点数を確認すると急激に下がっています。「もしかして考えすぎ・・・???????」

まさかと思い、windowsPCのプロパティから撮影日時を確認します。書いていました。完。

TsukuCTF23{2022/01/28}

 

location_for_what(osint)

GoogleLensにそのまま読ませたら出てきました。

TsukuCTF23{言の葉の庭}

mab(osint)

WordPressのテンプレートサイトを使用している。。。つまりロリポップ!!!!と短絡的な解き方をしてしまったので、まともな解き方について言及します。うえきさんが教えてくれたnetcraftというサイトにドメイン(mab.main.jp)をぽちぽち打ち込みます。すると

ここだけでも決定的ですが、更にDNSの欄をみると

もっとクリティカルな内容が書かれていました。

TsukuCTF23{lolipop.jp}

castle(osint)

どうみても天才ですね。ここから引き継がせてもらいました。
ストリートビューをぽちぽちしてるとそれっぽい場所が見つかったので、この周辺で微調整しました。flagは忘れました。

3636(osint)

「3636 ed.jp」で検索しました。いろいろ候補が出てきた中で、とうみょう子ども園の電話番号の末尾が53636で、少し見えていた5らしき数字にも一致してました。とうみょう子ども園の周りを、ストリートビューで確認します。矢印の向き的にここだろうというところにありました。flagは忘れました。座標系フラグ、忘れがち。。

perfume(osint)

GoogleLensにエジプト香水にフォーカスさせたら出てきます。

大分香りの博物館でした。

RegexCrossword(osint)

「こんな面白いもの貰ったら誰かはツイートしてるでしょ」と思ってまずは検索します。早くも自力解決する気0。問題文的にも「正規表現クロスワード」だと思ったのでそのまま検索欄に入力、Media欄を漁ります。

ありました。どうやら会津大学に置かれていたナプキンにクロスワードが書かれていたようです。

そこで、「正規表現クロスワード ナプキン」と調べていくと、解法について載せてくれているブログを見つけました。こちらです。

このブログによると、Ce7d4MJ5@nowhere.co.jpに対して連絡を取る旨が書かれたナプキンだったようです。これを検索したところ、

株式会社Eyes, JAPANが引っかかりました。

TsukuCTF23{965-0872}

broken display(osint)

ロクシタンが映っていたので、ディスプレイに映っている文字をもとにロクシタンの店舗名が○...○IYAとなっているものを店舗一覧で全探索します。後から思うとこの方法で確実に見つけられていたのですが、ここで私はおろかにも見逃しました。

そんな私は、フラグ形式を確認します。

やたら〇の形も具体的だし、もしかして〇は文字数......??

急に降りてきました。NISHINOMIYA_GARDENSだ。

行ったことがあったのが幸いしました。〇の数設定してくれた作者に感謝感謝。

TsukuCTF23{NISHINOMIYA_GARDENS}

以下解けなかった問題で、惜しいところまで(多分)いっていたもの

koi(OSINT)

うえきプロの発言。

ここから引き継いだ私は、小石原焼が有名である福岡県で鯉料理全探索します。結果的に、駆け込みで20個くらい打ちましたがCorrectしませんでした。。こことかめちゃめちゃぽくないですか????????なかった。でも美味しそうでした。

Sunset(OSINT)

FA狙いで早めに取り組んだこの問題、まずは問題文にあったshioさんのTwitterを遡りました。SecHackの取り組みであるCTFに出すからきっとセキュリティ系のイベント!と決め打ちます。そこでセキュリティキャンプミニ新潟に行っていたことが判明。

これにより、セキュリティキャンプ新潟の開催日時を調べると9/10、日没の時間をこちらのサイトで確認するので意気揚々と提出します。FAは私のもの__________________

この世の終わりですね。提出回数制限があるのに気づいていませんでした。尚且つよくみるとMM/DDの形式すら守れていません。これが後々私たちの命運を握ります。

 

ここで謎の確信を得ていた私は、提出フォーマットを整えて再提出を行います

残り一回。ここで一旦この問題は温めることにしました。

そうしてTsukuCTF2023は、のこり1時間になりました。あらかた解ける問題に関して着手を終えていた私たちは再びsunsetに取り組みなおします。

まず、さらなる確度を得るために、様々な方針で情報を得ることにしました。

「新潟 夕日」で調べていると、こちらのツイートがみつかります。

どうみてもここです。確信しかないです。ここで再提出を決意。

しかし先ほどはこれでIncorrectでした。

もしかして写真の時間は日没しきってないから少し前?????と話合い、提出の誤差許容が±1分だったことから、さっきの日没時間ではカバーできていない範囲で提出に臨みます。これで17:57 ~ 18:02はカバーできたも同然。

TsukuCTF23{2023/09/10_17:58}

いけ_______________

結果として、他の方のwriteupをみたところTsukuCTF23{2023/09/10_17:55}で通ったらしいです。もし私が最初にMM/DDの形式を遵守していれば______。

 

今回のCTFのまなび:

回数制限の確認をしたりフォーマットの確認をするなど、万全の体制で最善を"つくし"ましょう。

元気に動いているShojinさんを見るはずでした

これは、shojinさん👻🧚‍♀️による、

でぶ Advent Calendar 2023

に参加させていただいたものになります!

 

私はおばけですです。先日12月2日に投稿されたまるさん🙆‍♀️のアドベントカレンダー

maru65536.hatenablog.com

こちらを読ませていただいて、最後の美化Shojinさんが面白すぎていてもたってもいられなくなったので私も参加させていただきました。ジト目って良いですよ

後はブログのタイトルが大文字だったので、勝手にシンパシーを感じました。大文字って良いですよ

 

そういうわけで、今回のお題はこちらです!

動くShojinさんを作る!!!!!!!!!!!!!!!

 

生成系AIを使います。具体的には、DALL・E3とRunwayのGen2を使いました。どうみてもまるさんのアドカレに影響されていますね!👍✨✨

DALL・E3は有名になってきたので説明を端折ります。RunwayのGen2とは、与えた画像・動画やテキストをもとに、動画を生成してくれるものです。

 

まずは、Shojinさんのアイコンを拝借し、そのままGen2に流し込......もうとしたのですが、元サイトを参照したところ加工した画像や素材の再頒布がだめらしく、どこまでが再頒布の対象かわからなかったので今焦っています。記事を書き終わって余裕のムーブをしていたのにどうして・・・・・・😭😭😭😭どなたか再頒布の定義詳しい人材がいらっしゃたら、是非この機会に教えてほしいです。

焦った結果私もShojinさんらしい画像を生成することにしました。

作った画像がこちらになります。

かわよ~~~い🫶

元気ですね🧙‍♂️✨ではまずこれを、そのままGen2に流し込みます。付与したテキストオプションはこちらです。

これを動画にしたものがこちら!

 

Shojinさんどこにいったのかな。

 

意図としては、せっかくアドカレだしクリスマスっぽい背景を自動でつけてくれないかな、という願望をこめてプロンプトを書いたのですが、上手くいかなかったようです。

 

さすがにこのままではShojinさんに合わせる顔が無いので、もう一工夫しました。

クリスマス背景には限界を感じたので、これまたDALLE3にクリスマスっぽいイラストを描いてもらいました。それをなんかよい感じにおばけのイラストと組み合わせました。組み合わせたイラスト_最終版.jpgがこちらです。

jpgじゃなくてpngということに気づいた人、見る目💯💯💯💯

次こそ上手くいきそうな感じがします!プロンプトもかなりシンプルなものにしました。オプションの記述にどうやら絵文字が使えたらしいので、使った方がおばけの概念が伝わりやすいかなと思って追加しました。最適化のプロかも。

プロンプト

次こそうまくいくに違いありません。

思えばここにいたるまで苦節2023年、Shojinさんを動かすためにも、近年の人工知能領域は著しい発展を遂げてきました。この動画生成は、人類の叡智の集大成と言っても過言ではないでしょう。

頑張れ!!!Gen2!!!

できた動画がこちらです✨✨✨✨✨

誰????????????????

 

OMAKE_DESUYONE

粘ったもののどう頑張ってもShojinさんの形を保てませんでした。

 

mp4 → gifのコード

初めてはてなブログを書いて、動画を直接貼ることが出来ず面倒くさかったのでgifにしました。gifにするためのコードもchatGPTに書いてもらったのでおまけで載せておきます(ffmpeg必須)。

MP4 to GIF Conversion Script


import subprocess

def convert_mp4_to_gif(mp4_path, gif_path):
    """
    Convert an MP4 file to a GIF using FFmpeg.

    :param mp4_path: Path to the source MP4 file.
    :param gif_path: Path where the output GIF should be saved.
    """
    command = [
        'ffmpeg',
        '-i', mp4_path,  # Input file
        '-vf', 'fps=10,scale=320:-1:flags=lanczos',  # Frame rate and scale
        '-c:v', 'gif',
        '-f', 'gif',
        gif_path  # Output file
    ]
    subprocess.run(command, check=True)

# 使用例
convert_mp4_to_gif('path/to/your/video.mp4', 'path/to/output.gif')
    

アドカレ書く人とかで詰まった人がいたら、参考になったら嬉しいです。