しょんぼり技術メモ

まいにちがしょんぼり

TsukuCTF2023に参加した

人生初参加のCTFは TsukuCTF2022に参加した - しょんぼり技術メモ のとおりTsukuCTF2022だったんですが、そこから1年経ちました。早いもんですね。

というわけで2023年も無事開催されたので参加しました。今回は初のチーム参加で、「誕生日のやつを祝うの会」として参加して 10973pts, 17thでした。うち自分の回答分は4381ptsでした。なお名前の由来はよくわかりません。何なんですかね。

今回はネトスト^h^h^h^h OSINTがとても得意なmmr346さんとチームを組んだので、基本的にはOSINT問題を彼に任せる方針で進めました。

以下、自分がsubmitした問題の時系列順write upです。

osint: 3636

ed.jp5-3636が読み取れるので、tel 3636 site:ed.jpで検索して、5-3636に対応する施設を探す。 とうみょうこども園ということがわかるので、GoogleMapsで探していく。

misc: what_os

tty.txtが提供される。

# ed uids
88
1,7p
root:0
sys:1
bin:3
adm:3
jfo:4
ken:6
dmr:7
q

のように、dmrとkenというユーザがいて、カレンダーが1971年なので UNIX

web: basic

basic.pcapngが提供される。 HTTPでの通信が行われており、401の次のリクエストで平文でパスワードを送っている。

Basic YWRtaW46MjkyOWIwdTQ=

なので、

$ echo 'YWRtaW46MjkyOWIwdTQ=' | base64 -d
admin:2929b0u4

misc: 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を使用してください。

青空白猫で見てみると、c2pa.assertionsという文字列が出てくる。 C2PAのアサーションらしい。 C2PA Technical Specification :: C2PA Specifications

c2patoolで展開する。

github.com

urn:uuid:d67f9244-8583-43d2-bdb6-12082bbb76e7urn:uuid:632a603d-06bf-4660-ac5a-e94f41f61040のエントリがある。

urn:uuid:d67f9244-8583-43d2-bdb6-12082bbb76e7の方は、urn:uuid:632a603d-06bf-4660-ac5a-e94f41f61040の前に署名されているので、こちらの情報を答えれば良い。

assertions[0].data.author[0].nameがTSUKU4_IS_H@CKERで、 signature_info.timeが2023-12-08T13:00:26+00:00なので、

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

osint: location_for_what

location_for_what.png が提供される。 Google画像検索にかけると、言の葉の庭だそうだ。mmrさんのフラグ形式ミスで回答できていなかった問題。

osint: mab

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

正引きして逆引きするとlolipopのアドレスだということがわかる。

$ dig +short -x `dig +short a mab.main.jp`
157-7-107-89.virt.lolipop.jp.

osint: grass_court

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

パラボラアンテナが2基見える。可動式のものなので、宇宙関係のものを想定。 ひとまずVLBIだと当たりを付けて調べてみると、岩手県奥州市水沢星ガ丘町の水沢VLBI付近にテニスコートがある。 木の生え方などが一致しているので間違いない。

osint: stickers

あからさまに熱海要素のある画像で、千社札が張られた建物。 最初は背景の赤い文字からFUJITECであることに気づき、同社のサイトから地図を片っ端から眺めたもののハズレ。 熱海にサービスセンターがあるものの、具体的な住所が出てこなくて頓挫。

写真をよく見てみると、門のように通り抜けられるものではなく、東屋のようになっていることに気付く。 「熱海 東屋」で検索すると河原湯が紹介されているページが出てきて、実際にFUJITECもあることがわかる。

FUJITECは悪くないけどちょっと嫌いになりそうだった

TsukuCTF23{35.0967_139.0748}

rev: title_screen

父は昔プログラマーだったらしい、
しかし、当時開発したソフトのタイトルが思い出せない。
ソフトを起動すると画面にタイトルが表示されるらしいのだが...
残っている開発データからなんとか導き出そう!

※実行結果として予想される表示文字列(記号含む)をフラグとして解答してください。

キャラクターは8x8ピクセルを1ブロックとして並べられます。データはMapper0想定でCHR-ROMは8KBです。

source_code.zipが提供される。 character.bmpには文字が書かれたブロックらしきものが見える。main.asmとmain.cfgがある。

main.asmを見ると .setcpu 6502 とあるので、6502のアセンブリだとわかる。 6502を読むのはしんどいなーと思ってChatGPTに投げたところ説明してくれたので、それを踏まえて中身を読み進める。

mapping1とmapping2でPPUにデータを転送している箇所があるものの、mapping1はあまり文字を描いているようには見えないので先にmapping2を見てみる。 dataのバイト列を読み込んで、その値の場所にあるブロックをPPUに転送している処理があるので、一文字ずつ埋めていくと Tsukushi_Questとなる。

Excelはべんり!

osint: CtrlAltPrtSc

仕事中にCtrl + Alt + PrtScでウィンドウのスクリーンショットを撮ったよ。

つくし君がサボって使用していたサービスの名前を答えよ。 フラグはTsukuCTF23{サービスの名前}の形式です。

YouTubeのアイコンが見える気がするのでYouTubeって答えたらあってた。 Snipping Tool編集履歴が残ってる問題だと思って苦労した。。。思い込みは良くないですね。

osint: RegexCrossword

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

正規表現クロスワード。しかも写真。おまけに自称easy。 Excelに転記してゴリ押し。縦読みの英文だとあたりがついたのでguessしながら問い合わせ先メールアドレスを優先して復元。 nowhere.co.jp でググって会社情報から郵便番号を探す。寝るちょっと前に着手したせいでつらかったです。 寝ようと思ったけど悪夢を見そうだったので頑張って解きました。

せめて正規表現のテキストは欲しかった。解像度いまいちだし。

osint: free_rider

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

ググるとFidiasとかいうユーチューバーであることがわかる。

https://support.google.com/youtube/thread/242412557/

で紹介されている動画の概要欄に、オリジナルへのリンクがある。 https://www.youtube.com/watch?v=Dg_TKW3sS1U&t=0s これはコミュニティガイドライン違反で削除されている。

このアドレスで検索するとスラドの記事が出てくる。 https://it.srad.jp/story/23/10/29/1350256/ web.archive.orgでミラーされているらしいので、そこから見ていく。 Cookie同意が閉じられなくて邪魔だが、開発者ツールで開いてその要素をDELしたら再生できた。

02:56に該当シーンがあるので、秒数に直すと176秒。t=176sを付けてフラグ。

解けたとは言え、本当に気分が悪いですね……

感想

開催時間の割と大半を、家族サービスの所用で不在にしていたので正直かなり不完全燃焼だった感じがありますが、mmrさんが恐ろしいほどのOSINT力を発揮してスコアを稼ぎまくってくれたのでたいへん助かりました。やばい。

その分、OSINT以外は頑張らなきゃと思ってたんですが、build_errorもnew_cipher_schemeもMEMOwowもEXECpyも解けませんでした。

ププーあの人博士号持ってるのにcrypto問全然解けてないじゃないですか(笑)って言われてもぐうの音も出ない結果となりました。精進します。

という文字列を「防衛省 サイバーコンテスト 2023 (防衛省CTF) に参加した」からコピペしてきました。精進できませんでした。っていうか悪化してる気がしました。次こそは精進します。

ちなみに、本当に誕生日でした。家族からはあまり祝ってもらえませんでしたが、CTFを楽しんだ思い出深い誕生日になったと思います。