Challenge Overview
The challenge prompt was intentionally vague:
Darcy has apparently been having a lot of fun with a unique version control system.
She told me she hid a flag somewhere with her new tool and wants me to find it…
The key hint was the word “Darcy”, which strongly suggested Darcs, a lesser-used distributed version control system. Unlike Git, Darcs stores a large amount of repository state in its own metadata directory, making it a great place to hide secrets in a CTF scenario.
Initial Triage
The challenge provided a compressed archive:
darcy.tar.gz
The first step was to inspect the contents without extracting everything blindly.
tar -tf darcy.tar.gz | head
This immediately revealed a _darcs/ directory — confirmation that the repository was using Darcs rather than Git or another common VCS.
Understanding Darcs Internals (High Level)
Darcs stores repository data in a _darcs/ directory, including:
hashed_inventory– tracks repository state and metadatapatches/– compressed patch history (similar to commits)pristine.hashed/– stored versions of file contents
From a security perspective, this is important because:
- Files may be deleted from the working tree but still exist in metadata
- Human-written notes, messages, or comments may exist outside normal files
Step-by-Step Flag Hunting
Step 1: Extract the Archive
tar -xzf darcy.tar.gz
cd darcy
Step 2: Search for Common Flag Patterns
Before diving deep, a simple recursive search is always worth trying:
grep -RInE 'flag\{[^}]+\}|CTF\{[^}]+\}' .
This immediately returned a hit inside Darcs metadata:
_darcs/hashed_inventory
Step 3: Inspect the Inventory File
The hashed_inventory file is plain text and records repository state along with human-readable notes.
sed -n '1,200p' _darcs/hashed_inventory
Inside the file was the flag embedded in a metadata entry:
[routine update; details: flag{a0c1e852e1281d134f0ac2b8615183a3} ...]
Flag
flag{a0c1e852e1281d134f0ac2b8615183a3}
Why This Worked
This challenge relied on two key ideas:
Uncommon tooling – Many analysts default to Git; recognizing Darcs gave a major advantage.
Metadata ≠ code – Sensitive data often lives outside source files:
Lessons Learned / Skills Demonstrated
Technical Skills
- Identified and analyzed a non-standard version control system
- Navigated Darcs repository internals
- Performed targeted recursive searches for sensitive data
- Extracted secrets from metadata rather than application code
Analytical Takeaways
- Never assume “deleted” means “gone” in version control
- Repository metadata can be just as valuable as source files
- Understanding tooling internals (not just surface commands) pays off
Defensive Relevance
Applicable to real-world incidents involving exposed .git / _darcs directories
Reinforces the importance of secret scanning beyond code files
Highlights risk of leaking credentials via commit messages or metadata
Final Thoughts
This challenge was a great reminder that version control systems are data goldmines. Whether you’re doing CTFs, incident response, or code reviews, repository metadata deserves just as much attention as the source itself.
For defenders, this reinforces why:
- secrets should never be committed
- metadata should be scrubbed before sharing repositories
- exposed VCS directories are a serious security issue


