💻

taskctf22 writeup

2022/12/04に公開

はじめに

誕生日おめでとうございました。

task4233さんの誕生日に開催された初心者から中級者向けのCTFのwriteup。最終順位は42位でした。
Free Text:神は天にいまし すべて世は事もなし

writeup

web: robots

Flagが漏洩してるって聞いたけど、本当ですか???
URL

URLにアクセスすると何やらロボットが書かれた画面が表示される。

webでrobotsということなのでrobots.txtを確認してみる。すると,
User-Agent: * Disallow: /admin/flag
と表示される。おそらく/admin/flagにフラグが隠されていることからアクセスしてみると401エラーとともに、
[G-IP] is not internal IP address :(
と怒られてしまう。そこでプライベートIPかローカルループバックIPあたりに書き換えた上でアクセスを試みるためGoogle Chromeの拡張機能「X-Forwarded-For Header」を利用する。「192.168.1.1」では通らなかったため、「127.0.0.1」でアクセスしたところフラグが取得できた。

flag

taskctf{th15_c0ntr0l_y0u_th1nk_y0u_h4ve_1s_4n_1llu5i0n}

osint: welcome

2019年のtaskctfのwelcome問題のFlagは何でしたっけ?

問題文の通り過去のフラグを探せば良さそうなのでググる。

flag

taskctf{let's_enj0y!}

osint: ramen


このラーメン屋の名前は何でしょう?

正式名称ではなく、漢字のみで taskctf{ラーメン屋の名前}の形式で回答してください。 ラーメン屋の名前がラーメン二郎であれば、 taskctf{二郎} がFlagになります。

麻婆豆腐ラーメンの画像が一枚。おそらく有名店だろうと想像しながらGoogle Chromeの拡張機能「Search by Image」で検索をかけると一覧がヒットする。

問題画像と同じ調味料の容器の画像が見つかり店名をリンク先で確認すると蝋燭屋と出てくる。

flag

taskctf{蠟燭屋}

osint: kofun


作問者が訪れてSNSにもアップロードしたはずの古墳の名前を思い出せなくなってしまいました... もしご存知なら教えてくれませんか?

Flagの形式はtaskctf{この古墳の名前の漢字表記} です。 例えば、 造山古墳 が答えならば taskctf{造山古墳} がフラグになります。

問題画像には古墳の石室入口の画像が一枚。これのみで調べるには少し難がありそうだがとりあえずSearch by Imageで検索をかけるもののめぼしいものは出てこず。再度問題文を読み直すと「作問者が訪れて」と記載があることに気づく。開催者のtaskさんのツイッターアカウントに対して「古墳」で検索をかけると問題画像と同じ画像が見つかる。加えてもう一枚画像がついているためその画像をSearch by Imageで検索すると、龍角寺古墳群ということがわかる。しかし龍角寺古墳、百数個あることがわかる・・・探せど探せど見つからない・・・。ここでもう一度問題文とツイートを読むと、ツイートに「20基程度回るなどした」と記載があることから、GoogleMapの龍角寺古墳群周辺に対して「古墳」のみで検索をかけると外れた場所に「上福田岩屋古墳」が見つかる。GoogleMapに投稿されていう画像が問題画像と同じことがわかるためフラグ取得となった。

flag

taskctf{上福田岩屋古墳}

osint: douro


この写真が撮られた場所の緯度と経度を教えてください!

フラグの形式は taskctf{緯度_経度} です。ただし、緯度経度は十進法で小数点以下四桁目を切り捨てたものとします。 例えば、 皇居の入口が答えなら taskctf{35.682_139.762}が答えになります。 ref: https://goo.gl/maps/q9iJRNaaFMnDYdbGA

※緯度経度の表示方法は調べれば分かるので調べてください。

問題画像の右のほうに「CULVER F?P?」と光る看板のようなものが見える。Google検索で「CULVER F」まで打つと「culver formula」「culver forest」などが候補に出る。それっぽい感じがないため「CULVER P」のほうを調べると「cluver park」「cluver plaza」などが候補に出る。問題画像からplaza周辺の画像に見える気がするためGoogleMapで「cluver plaza」を調べる。

光っている看板の位置と十字路の道路という情報から「Irvine Center Dr」と「カルバー・ドライブ」の交差点と予想しストリートビューを確認すると問題画像と同じ場所だということがわかるため座標を確認しフラグ取得となる。

flag

taskctf{33.693_-117.798}

tutorial: submit_flag

Flagを提出してみましょう!

taskctf{th1s_1s_f14g}

問題文のフラグを提出すればおしまい。

tutorial: just_google_it

分からないことがあれば、自分で調べてみましょう!

添付ファイルの文字列からFlagを取得してください!

添付されてるファイルのファイル名がbase64_encoded.txtということなので、Cyber ChefでBASE64から平文に戻す。平文にはHello!がたくさん出てくるので「{」で検索すると「taskctf{Y0u_n0w」が「}」で検索すると「_know_base64!}」が見つかるので整形してフラグ取得となる。

flag

taskctf{Y0u_n0w_know_base64!}

try_python

Pythonはインタプリタ型のプログラミング言語です。計算やファイルの読み書き、ネットワーク操作などを簡単に実行できるため、CTFではよく利用されます。

Pythonを使って配布ファイルに書かれた数字を全て足してみましょう! Flagは taskctf{ファイルに書かれた数の合計} です。

問題文通り添付ファイルに書かれている数字をすべて足すことでフラグ取得となる。

flag

taskctf{250000}

build_dockre_environment

DockerとはOSレベルの仮想化技術です。簡単にいうと、どのPCでも同じ環境をコマンド1つで作成できるようになります。これにより、皆さんのPC上でもデバッグを行うことができます。

配布ファイルに含まれるapp/app.pyのコメントを外してDockerコンテナを起動し、Flagを取得してみましょう!

添付ファイル内のapp.pyを実行して立ち上がったコンテナもといWebサーバにアクセスするとフラグ取得となる。

flag

taskctf{D1d_y0u_run_d0cker_c0nta1ner?}

おわりに

誕生日にCTF運営するなんてとんでもないことをしてる人が世の中にはいるんだなぁと思いました笑

初心者から中級者向けのCTFということで参加してものの、OSINT以外はwebが一問解けたのみという結果に。技術/知識がまだまだ足りていないことを再確認しました。OSINTに関しては、kofunがSNSから導き出すあたり初心者向けにはひとひねり入っていて面白かったです。miscのanti_detectionに関してはGhidraでデコンパイルしてmain関数を読み解いて、C言語でfopenやらfscanfやらprintfやら書いたのですがフラグ取得ならず・・・くやしい。

なかなか初心者を対象にしてくれるCTFは少ないので、ぜひ来年も開催してくれたらと思います。

Discussion