~/ / problem3 · programming
Programming · Problem 03照合プロトコルの試練
状況
独自プロトコルで動く「照合サーバー」に接続した。サーバーは次々と小さな変換課題 (合計40ラウンド)を出題してくる。全ラウンドを制限時間内に 正解し続けると、最後に flag が開示される。1問ずつ手で解いていては到底間に合わない。クライアントを自動化して解ききれ。
プロトコル仕様
POST /api/problem3 (Content-Type: application/json)
# 開始
{ "action": "start" }
-> { token, challenge, total_rounds, time_limit_ms }
# 解答(round ごとに繰り返す)
{ "action": "answer", "token": "<直前のtoken>", "answer": "<解答>" }
-> 正解(継続): { correct:true, cleared, token, challenge }
-> 全問正解 : { correct:true, done:true, flag }
-> 誤答/時間切れ: { correct:false, reason }challenge は { round, total, type, prompt, data }。type は次の5種:
sum— data は整数配列(JSON)。総和を10進文字列で返す。reverse— data の文字列を逆順にして返す。rot13— data を ROT13 でデコードして返す。base64— data を Base64 デコードして返す。hex— data を16進デコードして ASCII 文字列で返す。
token は毎回更新される(前の round の token で次を解答)。制限時間はセッション開始 からの通算。手作業では絶対に間に合わない設計なので、ループを書くのが正攻法。
スターター(curl で1ラウンドだけ叩いてみる)
curl -s http://localhost:3000/api/problem3 \
-H 'Content-Type: application/json' \
-d '{"action":"start"}' | jqClaude Code に任せるなら:「/api/problem3 の照合プロトコルを解く Python スクリプトを書いて。start でtokenと課題を受け取り、type ごとに変換して answer をPOST、全40ラウンド解いて flag を出すまでループして」
参考: ブラウザ内オートソルバー(デモ)
本来の狙いは 自分でスクリプトを書いて解く ことです。まず curl や Python で挑戦し、動きを確認したいときにこのデモを使ってください。