CPCTF 2023にチームporakenの一員として参加しました。結果は新入生内23チーム中優勝、総合139チーム中準優勝でした。
この記事では僕が解いた問題を、解いた時刻順に問題について言及していきます。
Entrance to the Crypto World
問題文ページを開いたらEREVH{3PL0A_7J3_Y0TNF_0H_ETAR70!}
という文字列が見えました。記号がそのまま残っていて1文字目と3文字目が同じ文字なので多分シーザー暗号です。シーザー暗号
で検索して出てきたツールで解読しました。
2DCode 1
何もわからないのでヒントを見たら、「Googleで画像検索すると、これがDotCodeと呼ばれる二次元コードであるとわかります。」と言われました。DotCodeを読むツールを探したら見つかったので、これに画像を投げることによりFLAGが得られました。
welcome to CPCTF
ヒントを開いたらFLAGのおいてある場所が全部書いてあったので探しに行きました、が、ビジュアライザの分が見つからなかったのでponjuice君に丸投げしました。
netcat
書いてあるコマンドを実行することでフラグが得られました。
Dokoda? 2
浜松出身なので問題を開きました。写真に東海工産と書かれていたのでググったら答えが出てきました。浜松出身のメリットを活かせず…
この問題だけ数字の2が全角なので意味があるのかな~と思ったのですが、意味はなかったっぽいです。
Dokoda? 3
最初〇〇県道319号線を真面目に探していたのですが、上手く見つからず…
気分転換のつもりでイチョウといえば東大だよな~とか思ってGoogle Mapで東大の周りを見てみたら国道17号線と都道319号線が見つかりました。GeoGuessr力が活きました。
Dokoda? 1
何故かチームメンバーから放置されていたので、とりあえず画像検索したら答えが出てきました。
easylogin
よくわからなかったのでヒントをコピペしました。
1dayattack
そういえばAndroidの脆弱性にそういうのあったよな~と思って「Android スクショ 脆弱性」でググったら解読ツールが出てきました。
admin watches you
めっちゃ考えたのですが、分からなかったのでヒント2を見たらコンマをユーザーネームに使うと壊れると書いてあって、なんで気が付かなかったのかと悔しい思いをしました。
dictionary
ヒントを見たらテーブル一覧を取得しようと書いてあったので、テーブル一覧をUNITEしたらフラグがもらえました。
campaign registration
何もわからなかったので、解答を開いて丸写ししました。
ハッカーっぽい画面が出てきて興奮しました(小並感)
Digital Clock
ヒントを開いたら「K が十分大きいとき、ありえるデジタル時計の表示はどうなるか考えてみましょう。」と書いてありました。HとWが互いに素のときはH×Wになりそうです。互いに素でないときどうなるのか、適当に手元で実験したらH×W÷GCD(H,W)が上限になるっぽいです。一方、Kが小さい場合は多分K+1が上限になりそうです。多分この2つ以外に上限はないだろうと思ってprint(min(m*h//math.gcd(m,h),k+1))を提出したらACが得られました。後で気がついたのですが、H×W÷GCD(H,W)はただの最小公倍数ですね。
最後に
3/25にCPCTFのmisc対策を兼ねて高校時代の同級生とコンテストを開きました(CPCTFとなんの関係もない問題も多く含まれています)。現在も過去問が閲覧できるので、良ければ解いてみてください。