Programming

プログラミングで解くCTF問題

コードを書いてデータを加工・解析し、手作業では難しいセキュリティ課題を解く方法を学びます。

この分野で学べること

  • データを読み取り変換するコード
  • 問題を小さな処理に分ける方法
  • 解析作業を自動化する考え方

初めての方はLevel 1から始め、解けたら次の難易度へ進むのがおすすめです。

プログラミングのチャレンジ

47件の問題から選べます。

Programming Level 3: ★★★☆☆

プログラミング - マルチスレッド結果の再構築

worker-results.jsonl は起動時に注入された FLAG から生成されます。resultをBase64復元しworker別SHA-1 XOR後slot順に結合してフラグを取得してください。

Programming Level 3: ★★★☆☆

プログラミング - メモリダンプの解析

memory.img は起動時に注入された FLAG から生成されます。ALLOC:0x4040のlittle-endian長さ領域を切出しMD5(heap-0x4040)でXOR復号してフラグを取得してください。

Programming Level 3: ★★★☆☆

プログラミング - 既知平文攻撃

known.txt と ciphertext.b64 は起動時に注入された FLAG から生成されます。既知平文から繰返しXOR鍵ストリームを復元しRESULTを復号してフラグを取得してください。

Programming Level 3: ★★★☆☆

プログラミング - 独自プロトコルの解析

protocol.bin は起動時に注入された FLAG から生成されます。KINO長さ付きframeを走査しtype=3 payloadを0x23 XOR復号してフラグを取得してください。

Programming Level 3: ★★★☆☆

プログラミング - 画像ステガノグラフィ

image.pgm は起動時に注入された FLAG から生成されます。画素LSBを8bit単位で復元しNUL終端まで読み取ってフラグを取得してください。

Programming Level 4: ★★★★☆

Python上級 - カスタムVMバイトコードの実行

program.kvmは独自の4レジスタVM用バイトコードです。READMEの命令仕様を基にPythonでインタプリタを実装し、VMの出力を復元してください。

Programming Level 4: ★★★★☆

バイナリ修復 - ファームウェアヘッダーとCRC32

firmware.bin の先頭4バイトを KINO に修復し、byte 12以降の CRC32 をリトルエンディアンで byte 8-11 に書き戻してください。修正ファイルを challenge.py に渡すと起動時...

Programming Level 4: ★★★★☆

プログラミング - C2通信の解析

beacon.log は起動時に注入された FLAG から生成されます。seq順payloadをBase64結合しbeacon-v1 SHA-256先頭8byteでXOR復号してフラグを取得してください。

Programming Level 4: ★★★★☆

プログラミング - バッファオーバーフロー・クラッシュ解析

crash-report.txt は起動時に注入された FLAG から生成されます。SIGSEGVかつfault_offset対象のstack_after_offsetをtraining-stack-canary鍵でXO...

Programming Level 4: ★★★★☆

プログラミング - ファジング結果の解析

fuzz-results.log は起動時に注入された FLAG から生成されます。SIGSEGV入力を選びBLAKE2s(fuzz-case-17)でXOR復号してフラグを取得してください。

Programming Level 4: ★★★★☆

プログラミング - ブロックチェーンイベントの再構築

blocks.json は起動時に注入された FLAG から生成されます。FlagFragmentかつtopic=0xfeedfaceをindex順に結合し16進復元してフラグを取得してください。

Programming Level 4: ★★★★☆

プログラミング - ルートキットのビュー差分

proc_ps.txt と proc_kernel.txt は起動時に注入された FLAG から生成されます。プロセスビュー差分のmarkerをROT13復元してフラグを取得してください。

Programming Level 4: ★★★★☆

プログラミング - 異常リクエストの検出

requests.csv は起動時に注入された FLAG から生成されます。最大signal行のpayloadをBase85デコード後XOR復号してフラグを取得してください。

Programming Level 4: ★★★★☆

プログラミング - 診断結果の解析

findings.json は起動時に注入された FLAG から生成されます。到達可能critical findingのreversed_tokenを反転してフラグを取得してください。

Programming Level 4: ★★★★☆

プログラミング - 非同期スキャン結果の解析

scan.json は起動時に注入された FLAG から生成されます。443/tcpがopenの検証ホストを選びreview_fragmentsを16進復元してフラグを取得してください。

Programming Level 5: ★★★★★

Python上級 - 並行イベントDAGの因果関係復元

events.jsonlには複数サービスとtraceのイベントがランダム順で混在しています。指定されたauth.failedイベントを根としてparent参照の因果DAGを辿り、到達可能なworker.decryptの断...

Programming Level 5: ★★★★★

プログラミング - APTタイムラインの解析

timeline.jsonl は起動時に注入された FLAG から生成されます。exfiltrationイベントをpart順に並べ、反転したpacketを結合して16進復元してフラグを取得してください。

Programming Level 5: ★★★★★

プログラミング - AST静的解析による脆弱性検出

audit_samples.py は起動時に注入された FLAG から生成されます。ASTでsubprocess.runのshell=Trueを特定しreview_tokenの16進断片を復元してフラグを取得してください...

Programming Level 5: ★★★★★

プログラミング - AWS権限の解析

cloud_inventory.json と approved.json は起動時に注入された FLAG から生成されます。forensic-readerのs3:GetObject経路を確認しpartsをURL-safe...

Programming Level 5: ★★★★★

プログラミング - IoTファームウェアの解析

firmware.bin は起動時に注入された FLAG から生成されます。KFW1の末尾SHA-256タグを検算しsalt・長さ・payloadを解析してフラグを取得してください。

Programming Level 5: ★★★★★

プログラミング - カバレッジ誘導ファジング

coverage-queue.jsonl は起動時に注入された FLAG から生成されます。offset順にBase64 inputを並べedge-0x5e7 SHA-256でXOR復号してフラグを取得してください。

Programming Level 5: ★★★★★

プログラミング - ゼロクリック通信の解析

messages.ndjson は起動時に注入された FLAG から生成されます。sequence順payload_hexを0x31 XOR復元して連結してフラグを取得してください。

Programming Level 5: ★★★★★

プログラミング - タイミング攻撃データの解析

timings.csv は起動時に注入された FLAG から生成されます。各positionの最大median_us candidateを連結してフラグを取得してください。