チャレンジ一覧
Linux-Capabilities. SUIDに頼らない権限昇格
このシステムでは特定のバイナリにLinux capabilitiesが付与されています。SUIDビットではなくcapabilitiesを使った権限昇格の手法を探してみましょう。
Linux-SUID悪用. findバイナリで権限昇格せよ
このシステムにはSUIDビットが付与された find コマンドのコピーがあります。GTFOBinsで知られる手法を使い、root権限のシェルを取得してください。
Linux-procメモリ. プロセスの環境変数を覗き見よ
バックグラウンドで動き続けるデーモンプロセスがあり、その環境変数の1つにフラグが設定されています。/procファイルシステムを使ってプロセスの情報を調べてください。
Linux-strace. システムコールを追ってファイルを暴け
標準出力にもファイルにも何も残さないバイナリが用意されています。このプログラムは隠しファイルから鍵を読み、メモリ上でフラグを復元して /dev/null へ書き込みます。straceでシステムコールを追跡し、どの引数にフラグが現れるかを突き止めてください。
Linux-競合状態. TOCTOUの隙を突いてroot権限のファイルを奪え
rootが定期的に実行するクリーンアップスクリプトには、チェックと処理の間に隙(TOCTOU)があります。シンボリックリンクをうまく使ってこの隙を悪用してみてください。
ネットワーク解析 - 802.1Q VLANで分けられた通信
capture.pcapは、スイッチのトランクポートをミラーしてキャプチャした通信で、複数のVLANのフレームが802.1Qタグ付きで混ざっています。どのVLANでも同じ機器からUDP 5140番宛てに MGMT|<断片> の形で文字列が少しずつ送られ、全部が交互に混ざっています。管理VLAN 42の断片だけを届いた順につなげ、フラグを復元してください。
ネットワーク解析 - SNMP情報漏洩
弱いコミュニティ文字列(public)で SNMPv2c を喋る機器の GetResponse をキャプチャしました。配布されるパケットキャプチャ(traffic.pcap)から SNMP(UDP/161)の varbind を解析し、ベンダー独自OIDの値に含まれるフラグを回収してください。
ネットワーク解析 - SSL Stripによる平文認証情報
SSL Strip 攻撃により HTTPS が HTTP に格下げされ、被害者の認証情報が平文で流れた通信をキャプチャしました。配布されるパケットキャプチャ(traffic.pcap)から平文HTTPのPOSTを解析し、ログインのパスワード(フラグ)を抽出してください。
ネットワーク解析 - WebSocketフレームのマスク解除
capture.pcapには、ブラウザとチャットサーバーのWebSocket通信が記録されています。クライアントからサーバーへのフレームは毎回ちがう4バイトの鍵でマスクされています。フレームを解析してマスクを外し、3つのフレームに分割されたメッセージを組み立てて、デプロイ用のトークン(フラグ)を取り出してください。
ネットワーク解析 - 独自プロトコルの解読
独自の簡易バイナリプロトコルで通信するシステムのトラフィックをキャプチャしました。配布されるパケットキャプチャ(traffic.pcap)から、TCPポート9999のフレーム構造を解析し、ペイロードをデコードしてフラグを取得してください。
暗号解析 - RSA共通モジュラス攻撃
2つのシステムが同じRSAの法nを使い回し、公開指数だけを変えていました。同じメッセージを e1 と e2 で暗号化した暗号文 c1, c2 が漏れています(public_keys.txt、ciphertexts.txt)。nは素因数分解できませんが、秘密鍵なしでメッセージを取り戻し、フラグを提出してください。
暗号解析 - 小さい素数のDiffie-Hellman
古いIoT機器が36ビットしかない素数pでDiffie-Hellman鍵共有をしていました。handshake.txtには p, g, A = g^a mod p, B = g^b mod p と、共有鍵から作った鍵ストリームで暗号化された設定データがあります。離散対数を解いて共有鍵を求め、設定データに含まれるフラグを取り出してください。鍵ストリームの作り方はREADME.mdにあります。