feature image

2024年4月27日 | ブログ記事

CPCTF 作問者 Writeup ramdos編

この記事は新歓ブログリレー 50日目の記事です。

この記事は、先日のCPCTFで作問した問題の作問者Writeupです。

[web] Read Novels

問題文

小説が読めるサイトを見つけたぞ!
これ小説以外も見れるじゃん...
サイト:https://read-novels.web.cpctf.space
配布ファイル:https://files.cpctf.space/read-novels.zip

解説

単純な文字列結合でファイルパスを作成しているため、パストラバーサル攻撃が可能です。

filepath./novel/../flagにするために、 nameとして ../flagなどを送ることでフラグが得られます。

[web] Let's buy some array

問題文

贔屓にしている数列屋さんがモバイルオーダーに対応したらしい。とは言っても金額計算機能しかないらしいけど。
...この金額計算、あんまり安全じゃなくないか?
問題サーバー:https://lets-buy-some-array.web.cpctf.space/
配布ファイル:https://files.cpctf.space/lets-buy-some-array.zip

解説

金額計算にPHPのeval()が使われているため、任意コード実行が可能です。

eval('return ' . $_POST["quantity1"] . '*1000;')$_POST["quantity1"]に不正なコードを注入することを考えます。

環境変数FLAGにフラグが含まれているため、$_ENV['FLAG']を返すようなコードを注入することを考えます。

単に$_ENV['FLAG']を入れると$_ENV['FLAG'] *1000が実行されてしまいます。PHPはPythonなどと異なり文字列×数字の演算は出来ないので、これはエラーになります。
エラーを回避する方法としては、*1000の前に数字を置く方法があります。例えば、quantity1として$_ENV['FLAG'] . 2などを送ることで$_ENV['FLAG'] . 2*1000 を実行させることができます。

なお、数値以外が入力されていないことがクライアント側でのみ検証されているので、type="number"を開発者ツールで除去するなどの適当な手段で回避する必要があります。

[OSINT] Doctor yellow

2024年の東工大の前期合格発表の翌日、河川敷を歩いていたら黄色い新幹線が走っているのを見かけました。

これはどこで撮られた写真でしょう?

フラグは撮影された場所の緯度と経度を10進数で表記して小数点以下3桁で切り捨てたものを順に並べたものです。

(例えば北緯aa.bb度 東経ccc.dd度であるとき、緯度と経度を用いてCPCTF{aabb_cccdd}です。)

解説

空が橙色なので日の出日の入りの前後に撮影された写真であると分かります。
2024年の東工大の前期合格発表の翌日、すなわち2024年3月9日の東京の日の出は6:00、日の入りは17:43です。
ドクターイエローが朝早くに走ることはないので、17:43頃に撮影された写真であると推測できます。

2024年3月9日のドクターイエローの走行情報を調べると、博多から東京に向かって「のぞみ号」と同様の停車パターンで検測を行う、いわゆる「のぞみ検測」が行われていたことが分かります。Web検索をすることで「のぞみ検測」をドクターイエローは17:43頃に品川駅付近を通過することが分かります。
また、写真には大きな河川が写り込んでいます。品川駅付近の大きな河川と新幹線が交わる場所の衛星写真やGoogle ストリートビューなどを確認することで、沼部駅付近の東海道新幹線多摩川橋梁を東京都側から撮影した写真であることがわかります。

フラグは CPCTF{3558_13967} です。度分秒(60進法)ではなく10進法で回答する必要がある点に留意しましょう。

ちなみに作問中に気付いたのですが、実はGoogle Lensで検索すると一発で解けてしまいます。トリミングで情報量を増やしてもこの解法が防げなかったため、別解として残すことにしました。

おわりに

いかがでしたか?

やや簡単な問題が中心だったので楽しんでもらえるか少し不安があったのですが、初心者の皆さんにもヒントなどを参考にしながら楽しんでもらえたようで嬉しかったです。

明日のブログリレーの担当は@ogu_kazemiya君です。お楽しみに!

ramdos icon
この記事を書いた人
ramdos

23B。CTFをしている場合とそうでない場合があります。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2021年8月12日
CPCTFを支えたWebshell
mazrean icon mazrean
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2024年3月22日
traPグラフィック班の活動紹介2024
haru10 icon haru10
2024年4月14日
Spotifyのクライアントを自作しよう
d_etteiu8383 icon d_etteiu8383
2024年4月14日
unityroomでAddressablesを使った話
inutamago_dogegg icon inutamago_dogegg
2024年3月17日
⑨でもわかる8bitアレンジ講習会
vPhos icon vPhos
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記