
Black-box pentest lab for the PHP2Shell engine memory-corruption family (CVE-2026-109618 / CVE-2026-109619, CVSS 9.8/9.2). Dual-flag verified attack chain, agent-calibrated. EN/JP/ZH.
PHP2Shell — 2026年のPHPエンジン級メモリ破損脆弱性群(CVE-2026-109618 / CVE-2026-109619、CVSS 9.8/9.2、PHP 8.4.27で修正済み)を軸に構築した、ブラックボックスCTFターゲットです。脆弱性はアプリではなくエンジンにあります。ごく小規模なPHPアプリ層にはインジェクション系の問題が意図的に存在しません。実行時ランタイムを指紋で特定し、アドバイザリと照合し、正しい弾道を選定してください。 詰まった場合はdocs/SOLUTION.mdの全解法手順を参照。
前提条件: Docker Engine(Windows/macOSではDocker Desktop)+ Compose v2 のみ。ホストにPHPツールチェーンは不要です。Windows 10/11(WSL2)、Linux、macOSで動作。CPUに対応可能な攻撃チェーンは下記のプラットフォーム注意を参照。
git clone https://github.com/taniungou/php2shell-lab.git
cd php2shell-lab
docker compose up -d --build # 初回ビルドでpin済みbase imageを取得
http://localhost:18901 を開き、ユーザー demo(パスワード change-me-demo)でログインするとアプリに到達します。ここから先はブラックボックスです。
独自のフラグ値とアカウントパスワードを設定する場合:private.ini を編集後、
docker compose build \
--build-arg FLAG_LOCAL=flag{...} \
--build-arg FLAG_PROOF=flag{...}
運用コマンド:
docker compose logs -f # ログ監視
docker compose down -v && docker compose up -d --build # 完全リセット(リークウィンドウ再開放)
docker compose down # 停止・リソース解放
フラグはOverTheWire方式です:
| フラグ | パス | 読取可能ユーザー |
|---|---|---|
local.txt | /var/www/local.txt | www-data |
proof.txt | /root/proof.txt | root のみ |
up まで戻りません。proof.txt への2つの権限昇格経路(洗練度に差あり)。少なくとも1つは実射検証済み。本番機群にスケールするのは1つだけです。PHP2Shellの公開済みRCE着弾エクスプロイトはx86_64カーネルヒープ配置を前提とします。Apple Silicon(およびWindows-on-ARM等のaarch64ホスト)ではリーク系プリミティブは着弾するものの、RCE着弾は再現しません。これはamd64エミュレーション下・arm64ネイティブ・アドバイザリ著者の参照構成(calif.io/php2shell、x86_64 Linux)のいずれでも検証済みです。ARMホストでは想定解は開示チェーンでありRCEチェーンではありません(開示チェーンはx86_64を含む全環境で動作)。詳細:docs/PLATFORM-MATRIX.md。
全キルチェーン・オフセット・ラウンド別攻撃トランスクリプト:docs/SOLUTION.md。
MIT — 改変・フォーク・研修利用歓迎(帰属表記は歓迎、必須ではありません)。