チャレンジ一覧

絞り込みを解除

113 問 (4 / 5 ページ)

基礎スキルLevel 3★★★☆☆

SQLクエリマスター - 複雑な結合

SQLite データベース `/challenge/company.db` には3つのテーブルがあります。 - employees (id, name, department_id, salary, email, note) - departments (id, name, manager_id) - projects (id, name, department_id, budget) 次の条件で従業員を1人選んでください。 1. budget が 100000 以上のプロジェクトを1つ以上持つ部署(小さいプロジェクトの合計が 100000 を超えても対象外) 2. それらの部署に所属する従業員の中で salary が最も高い人 その人の note 列がフラグです。各部署の最高給の従業員の note にはどれも KINOCO{...} の形の値が入っているので、条件を1つでも外すと別の人が選ばれます。

WebセキュリティLevel 3★★★☆☆

Web-21. Secure User Searchのブラインドインジェクション

このユーザー検索アプリはユーザー名の存在有無だけを返しますが、直接的な検索結果は表示しません。エラーの発生有無やレスポンスの違いを手がかりに、隠された情報を推測できないか確認してみましょう。

WebセキュリティLevel 3★★★☆☆

Web-22. Secure Comment BoardのCSPバイパス

このコメント掲示板はContent Security Policy(CSP)で保護されており、スクリプトの実行元を自サイトと信頼済みCDNのみに制限しています。信頼されたCDNの中身まで安全とは限らない点に注目してみましょう。

WebセキュリティLevel 3★★★☆☆

Web-23. Secure Authentication Systemの型変換の罠

このログインポータルはフォームログイン・JSON API ログイン・検証コードチェックを備えています。管理者アカウントの本当のパスワードは分かりませんが、比較処理の実装次第では回避できるかもしれません。

WebセキュリティLevel 3★★★☆☆

Web-24. Secure Bankの競合状態を突く

Secure Bankではコイン残高を使ってショップで景品を購入できます。残高チェックと引き落とし処理が別々のステップで行われている場合、その間隙をどう突けるか考えてみましょう。

WebセキュリティLevel 3★★★☆☆

Web-25. Greeting Card GeneratorのSSTI

このグリーティングカード作成アプリはFlask/Jinja2で作られており、入力したメッセージをそのままテンプレートエンジンでレンダリングしています。テンプレート構文がどこまで実行されてしまうか調べてみましょう。

基礎スキルLevel 3★★★☆☆

システムコール追跡 - strace デバッグ

ソースコードのないプログラム `/app/mystery_program` を strace でトレースした記録 `/challenge/strace.log` を解析します。プログラムはトークンらしい中身(`KINOCO{...}` の形)のファイルをいくつも読み込みますが、(1) 隠しディレクトリ(名前が `.` で始まるディレクトリ)の中のファイルであり、かつ (2) `read` したその中身をあとで標準出力(fd 1)に `write` している、という2条件を両方満たすものはただ1つです。その中身がフラグです。普通のディレクトリにあるドットファイルは (1) を満たしません。fd 番号は `close` の後に使い回されます。

基礎スキルLevel 3★★★☆☆

システムログ解析 - journalctl マスター

systemd ジャーナルを `journalctl -o short` 風に書き出したログ `/challenge/system.log` を解析します。各行は「日時 ホスト ユニット[PID]: 優先度: メッセージ」の形です。ユニットの欄が `authd` で、優先度の欄が `ERR` の行はただ1行で、その行のメッセージにフラグが含まれます。`KINOCO{...}` の形の文字列はほかの行にもありますが、ユニットが `authd-proxy` など別物だったり、本文に authd や ERR という文字が出てくるだけだったりします。コンテナに journalctl は無いので、`grep`/`awk` で欄の位置を見て絞り込んでください。

基礎スキルLevel 3★★★☆☆

ネットワークマスター - Netcat リバースシェル

外部ホストへ接続せず、記録済みの artifacts/netcat/callback-transcript.log を解析してください。リスナーやシェルは起動されません。侵害されたホスト 10.0.5.23 から remote.target.com の 4444 番ポートへつながったコールバックを接続一覧から探し、その conn ID で「captured first bytes」の16進データを引き当て、文字列に戻すとフラグになります。送信元・宛先ホスト・宛先ポートのどれかが違う接続はおとりです。

基礎スキルLevel 3★★★☆☆

パフォーマンス解析 - リソースホッグを見つけろ

サーバーのスナップショット `/challenge/metrics.log` を解析します。前半は top 風のプロセス一覧(%CPU は9列目、%MEM は10列目)、後半は ps -ef 風のフルコマンドライン一覧です。%CPU が 50.0 以上かつ %MEM が 20.0 以上のプロセスはただ1つで、その PID の ps -ef 行の `--token=` 引数がフラグです。`--token=KINOCO{...}` を持つプロセスはほかにもあり、%CPU 最大・%MEM 最大のプロセスはどちらも条件を両方は満たしません。

基礎スキルLevel 3★★★☆☆

正規表現エキスパート - データバリデーション

/challenge/data.txt には受付記録が400行あり、各行にメールアドレス・電話番号・IPアドレス・日付が行ごとに違う順番・ラベルで並び、最後に memo="..." があります。書式が壊れた項目や、項目が無い行もあります。 次の条件をすべて正しい書式で1行に含む行はただ1行で、その行の memo がフラグです。 1. メールアドレス(xxx@yyy.zzz) 2. 電話番号(xxx-xxxx-xxxx または xxx.xxxx.xxxx。数字の桁数はこのとおり) 3. IPアドレス(xxx.xxx.xxx.xxx。数字1〜3桁を4つ) 4. 日付(YYYY-MM-DD) memo に KINOCO{...} の形の値を持つ行はほかにもありますが、どれも1つの条件が欠けています。正規表現を組み合わせて絞り込んでください。

基礎スキルLevel 3★★★☆☆

高度な自動化 - ディレクトリ監視スクリプト

`/challenge/logs/` に Web フロントエンド4台分のアクセスログ(combined log format、60ファイル・10万行超)があります。WAF は多数の送信元IPについて、それぞれ1行だけ `waf_rule=... note=...` を書き残しており、どの note もフラグの形をしています。フラグは、ステータスコード 404 のリクエスト数が最も多い送信元IPの行にある note です。404 が少し少ない別のスキャナー、総リクエスト数が最多のIP(ほとんど 200)、403 が最多のIP、通常の客のIPにも note があり、これらはおとりです。404 を IP ごとに集計して特定してください。

基礎スキルLevel 4★★★★☆

AWS CLI - S3バケット調査

S3 の設定をオフラインでエクスポートした監査記録が `/challenge/s3_audit/` にあります(`buckets.json` と、バケットごとの `*_publicaccessblock.json`・`*_policy.json`・`*_acl.json`・`*_objects.json`)。機密オブジェクト(`backups/prod.env` または `credentials/service-account.json`)を持つバケットは多数あり、どの `object_preview` にもフラグの形をした値があります。フラグは、本当に世界中に公開されているただ1つのバケットの機密オブジェクトにある値です。その条件は、(1) PublicAccessBlock の4設定がすべて false で、(2) ポリシーに `Effect: Allow`・`Principal: "*"`・`Action` に `s3:GetObject` を含み・`Resource` に `arn:aws:s3:::<バケット名>/*` を含み・`Condition` が無い statement があることです。ほかのバケットは、このどれか1つだけを外したおとりです。

基礎スキルLevel 4★★★★☆

Ansible自動化 - サーバー構成管理

Ansibleや実サーバーを実行せず、生成済みの実行記録 artifacts/ansible/vault-export.yml を解析してください。記録には多数のタスク結果があり、そのうち多くに vault_payload_hex が付いています。本物は、host が web-03、task が deploy-index、status が changed の3つがすべて一致する1件だけです(名前の一部だけが一致する記録や、成功していない記録はおとりです)。値は Ansible vault の本体と同じく16進で書かれていて、16進を戻すと Base64 の文字列になります。それをさらに戻すとフラグです。

基礎スキルLevel 4★★★★☆

CI/CDセキュリティ - GitHub Actions 脆弱性

`/challenge/repo/.github/workflows/` にある20個の GitHub Actions ワークフローを監査します。多くのステップに `# audit-ticket: KINOCO{...}` というコメントが付いています。次の3条件をすべて満たす「pwn request」脆弱性を持つワークフローは1つだけで、そのステップの audit-ticket がフラグです。(1) トリガーが `pull_request_target`。(2) あるジョブが、チェックアウトの `ref:` に `github.event.pull_request.head.sha` や `head.ref` を指定して PR の head を明示的にチェックアウトしている。(3) その同じジョブが `secrets.*` を参照している。どれか1つでも欠けるワークフローはおとりです。

基礎スキルLevel 4★★★★☆

Infrastructure as Code - Terraform セキュリティ

Terraform providerを初期化せず、生成済みの terraform/terraform.tfstate を解析してください。outputs の recovery_secret_arn が、復旧用シークレットの ARN を指しています。resources の aws_secretsmanager_secret_version のうち、secret_id がその ARN と完全に一致し、version_stages に AWSCURRENT を含む版が現在の値です。その secret_string(JSON を文字列にしたもの)の recovery_token を Base64 デコードするとフラグになります。

基礎スキルLevel 4★★★★☆

Kubernetes入門 - クラスター調査

実Kubernetesクラスターへ接続せず、artifacts/kubernetes/ の2つのスナップショット(pod-snapshot.yaml と secret-snapshot.yaml)を調べてください。namespace security-lab の Pod suspicious-audit-pod は、環境変数 AUDIT_TOKEN を Secret から読んでいます。その secretKeyRef が指す Secret(同じ namespace で同じ名前)の、指定されたキーの値を Base64 デコードするとフラグになります。別の namespace の同名の Pod や Secret、似た名前の Secret、同じ Secret の別のキーはおとりです。

LinuxLevel 4★★★★☆

Linux-カーネルモジュール. 脆弱なドライバでroot権限を得よ

このチャレンジは、脆弱なキャラクタデバイスドライバを安全なユーザー空間シミュレーションとして解析します。実際のカーネルモジュールはロードされません。root デーモンがドライバを /run/vulnerable.sock として公開し、あなたは非特権ユーザー challenger(uid 1000)として接続します。提供されたドライバソース vulnerable.c を読み、read/write の境界不備を突いて自分の資格情報を uid 0 に書き換え、GETFLAG でフラグを取得してください。

LinuxLevel 4★★★★☆

Linux-バッファオーバーフロー. gets()の脆弱性を突け

SUIDが付与された脆弱なCバイナリが用意されています。保護機構が無効化されたこのプログラムのバッファオーバーフローを突いて、隠された関数へ制御を移してください。

WebセキュリティLevel 4★★★★☆

Web-26. User Profile Managerのプロトタイプ汚染

このNode.js/Express製アプリではログイン中のユーザーが自分のプロフィールを更新できます。更新処理に使われている再帰的なマージ関数が特殊なキーをきちんと除外しているか確認してみましょう。

WebセキュリティLevel 4★★★★☆

Web-27. GraphQL APIのイントロスペクション漏洩

このGraphQL APIはUserオブジェクトのスキーマを公開しており、イントロスペクションが有効になっています。公式には案内されていないクエリやフィールドが存在しないか調べてみましょう。

WebセキュリティLevel 4★★★★☆

Web-28. OAuth認可コードの横取り

このOAuth 2.0認可プロバイダーはログインフローを提供していますが、redirect_uriの検証が甘い可能性があります。認可コードを横取りして管理者権限のアクセストークンを得られないか確認してみましょう。

WebセキュリティLevel 4★★★★☆

Web-29. MongoDBログインフォームのNoSQLインジェクション

このログインポータルはMongoDBを使っており、ユーザー名・パスワードをJSONとしてそのままクエリに組み込んでいます。パスワードを知らなくても管理者としてログインできないか確認してみましょう。

WebセキュリティLevel 4★★★★☆

Web-30. KinoVaultの安全でないデシリアライズ

レガシーなバックアップシステム「KinoVault」は、ユーザーセッションをPythonのpickleでシリアライズしてCookieに保存していると噂されています。Cookieの形式を解析し、悪意あるpickleペイロードで権限を昇格できないか調べてみましょう。