How the Exploitarium Repository Is Structured for Each Vulnerability: A Complete Guide to Its PoC Architecture
Each vulnerability in Exploitarium lives in a self-contained sub-directory with a README, minimal PoC code, and auxiliary scripts, enabling standalone reproduction without cross-folder dependencies.
The bikini/exploitarium repository is a curated archive of independent proof-of-concept (PoC) projects. Understanding how this repository structures each vulnerability helps security researchers quickly locate, comprehend, and execute exploits. This guide breaks down the folder-level conventions, file patterns, and execution workflows found throughout the codebase.
Self-Contained Vulnerability Folders
Every vulnerability resides in its own top-level directory. This isolation-by-design ensures that researchers can work with a single PoC without downloading or configuring unrelated dependencies.
According to the repository's top-level README.md (lines 27-71), each entry is catalogued with:
- Directory name matching the vulnerability (e.g.,
curl-smtp-expn-recipient-crlf-injection/) - Original source — either a commit hash for migrated repositories or "direct entry"
- File count — the number of tracked files in that PoC
Standard Files Found in Every Vulnerability Directory
While specific implementations vary, most folders contain a predictable set of files:
| Component | Purpose | Typical Filename(s) |
|---|---|---|
| README | Background, technical explanation, and usage instructions | README.md |
| PoC Code | Minimal reproducible exploit or crash trigger | poc.py, poc.c, poc.js, run_demo.py |
| Execution Wrapper | Shell script or Python driver to automate setup | run.sh, run_demo.py |
| Supporting Data | Payloads, test vectors, or evidence logs | evidence/*, generated sample files |
| Version Control Exclusions | Keeps build artifacts and large binaries out of git | .gitignore |
The README in each folder is the authoritative source for running that specific PoC. It specifies exact command lines, environment variables, and expected outputs.
Representative Vulnerability Structures
cURL SMTP EXPN CRLF Injection
Directory: curl-smtp-expn-recipient-crlf-injection/
cd curl-smtp-expn-recipient-crlf-injection
python run_demo.py # Uses system curl
python run_demo.py --curl /opt/curl/bin/curl # Custom binary
The run_demo.py script spins up a local SMTP server, crafts a curl configuration that injects additional SMTP commands, and outputs a JSON-encoded evidence file. See the folder's README (lines 1-15) for the exact output format.
OpenSSH Forwarded-Agent Lock Bypass
Directory: openssh-agent-lock-provider-bypass/
cd openssh-agent-lock-provider-bypass
OPENSSH_PREFIX=/opt/openssh-10.4p1 bash run.sh
The run.sh wrapper builds a temporary OpenSSH environment, locks the agent via poc.py control lock, forwards the socket, unlocks the agent, then probes with poc.py probe. The README (lines 88-100) documents the successful replay confirmation.
VLC VP9 Resolution-Change Crash
Directory: vlc-vp9-reschange-crash-poc/
cd vlc-vp9-reschange-crash-poc
python poc.py # Generates IVF file
python poc.py --vlc "/c/Program Files/VideoLAN/VLC/vlc.exe" # Replay against VLC
First invocation creates vp9_reschange_64x64_to_64x8192_tc0.ivf; the second replays it and reports process exit status. Usage details appear in README lines 49-67.
Repository Root Structure
/exploitarium
│ README.md ← Master index with vulnerability inventory
│ .gitignore
│ .gitattributes
│
├─ curl-smtp-expn-recipient-crlf-injection/
│ ├─ README.md
│ ├─ run_demo.py
│ └─ .gitignore
│
├─ openssh-agent-lock-provider-bypass/
│ ├─ README.md
│ ├─ poc.py
│ ├─ run.sh
│ └─ evidence/
│
├─ vlc-vp9-reschange-crash-poc/
│ ├─ README.md
│ ├─ poc.py
│ └─ .gitignore
│
├─ redis-vset-duplicate-hnsw-id-rce-poc/
│ ├─ README.md
│ └─ poc.py
│
├─ qemu-cxl-type3-mailbox-escape-poc/
│ ├─ README.md
│ └─ run.sh
│
├─ discord-activity-stock-client-rce-poc/
│ ├─ README.md
│ └─ server.js
│
⋮
Each <vuln-folder>/ operates as an independent unit. No cross-directory imports or shared build systems are required.
Why This Structure Improves Security Research
Isolation — Researchers fetch only the folder they need, eliminating dependency conflicts between PoCs targeting different software stacks.
Reproducibility — All artifacts required for demonstration (scripts, payloads, evidence logs) coexist in one location. A fresh checkout of any single folder should yield a working PoC.
Version Traceability — The top-level README preserves original commit hashes for migrated repositories. For example, 7zip-rar5-motw-chain-poc maps to commit bd9533f5…, ensuring the exact source version remains documented.
Key Source Files by Vulnerability Type
| Vulnerability | Primary File | Function |
|---|---|---|
| cURL SMTP CRLF injection | run_demo.py |
Orchestrates local SMTP server and curl execution |
| OpenSSH agent lock bypass | poc.py |
Implements control lock, probe subcommands |
| VLC VP9 crash | poc.py |
Generates malformed IVF samples |
| Redis VSET RCE | poc.py |
Exploits duplicate HNSW ID vulnerability |
| QEMU CXL escape | run.sh |
Builds and launches vulnerable QEMU instance |
| Discord activity RCE | server.js |
Hosts malicious payload for Discord client |
Summary
- Exploitarium uses per-vulnerability directories at the repository root, each acting as a standalone PoC project.
- Every folder contains a README.md with execution instructions, a minimal PoC script (Python, C, JavaScript, or shell), and supporting files as needed.
- The top-level README serves as a master index, tracking file counts and original source commits.
- No inter-folder dependencies exist; each PoC can be cloned and run independently.
Frequently Asked Questions
What file should I read first when exploring a new vulnerability?
Start with the README.md inside the vulnerability's folder. It contains the background explanation, exact commands to run, and expected outputs. The top-level README only provides the inventory and source attribution.
Can I run a PoC without cloning the entire repository?
Yes. Each vulnerability folder is self-contained. You can use GitHub's sparse-checkout feature, download a single directory as a ZIP, or copy just the files listed in that folder's entry. No build steps at the repository root are required.
How does Exploitarium track the original source of each PoC?
The top-level README.md documents either the original commit hash (for vulnerabilities migrated from standalone repositories) or marks them as "direct entry" (for contributions created directly in Exploitarium). This preserves version provenance for every entry.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →