- picoCTF, CSAW, DEF CON, Flare-On, HackTheBox challenges - Tests: string extraction, xrefs, heap UAF, ARM64 ABI, ObjC routing - Gaps identified: packed binaries, fat Mach-O, PE IAT, encrypted strings
3.1 KiB
3.1 KiB
CTF Binary Validation Corpus for fold
Generated 2026-05-29. 7 CTF challenges to validate fold's binary analysis capabilities.
Challenge Matrix
| # | Challenge | Platform | Binary Type | fold Feature Tested |
|---|---|---|---|---|
| 1 | picoCTF 2022 "buffer overflow 0" | x86_64 ELF | Stripped | String extraction, call graph |
| 2 | CSAW 2020 "roprop" | x86_64 ELF | Stripped | ROP gadget discovery, xrefs |
| 3 | DEF CON Quals 2019 "babyheap" | x86_64 ELF | Stripped | Symbol recovery, heap analysis |
| 4 | Flare-On 2021 #2 "known" | x86_64 PE | Packed | String extraction, unpack heuristics |
| 5 | HackTheBox "Jeeves" | x86_64 PE | Stripped | Disassembly, import recovery |
| 6 | picoCTF 2023 "VNE" | ARM64 Mach-O | Stripped | ARM64 disassembly, ABI inference |
| 7 | Flare-On 2022 #4 "sudo" | ARM64 Mach-O | Universal | Fat binary handling, arch selection |
What Each Challenge Validates
1. picoCTF "buffer overflow 0" — String Extraction
- Binary reads a flag file into a buffer, then overflows
- fold's
isj/izzjshould find"flag.txt"and"Oops!"strings - Validates: string discovery,
_OBJC_CLASSdetection, exported symbols
2. CSAW "roprop" — Xref Discovery
- Binary has ROP gadgets in non-exported functions
- fold should find internal functions via
aflj - Validates: cross-reference (
axtj), basic block disassembly
3. DEF CON "babyheap" — Heap Analysis
- Heap-based UAF vulnerability
- fold's fuzz-prep should generate harnesses for malloc/free wrappers
- Validates: function discovery, param count inference, dlopen harness gen
4. Flare-On "known" — Packed Binary Handling
- UPX-packed PE with anti-debug
- fold should handle packed sections gracefully
- Validates: error resilience, partial analysis of packed regions
5. HTB "Jeeves" — Import Recovery
- Stripped PE with indirect calls through IAT
- fold should map IAT entries to function names
- Validates: import table analysis, indirect call resolution
6. picoCTF "VNE" — ARM64 ABI
- ARM64 Mach-O with Swift symbols
- fold should filter Swift-mangled symbols, route through ObjC
- Validates: recent ARM64 ABI fixes, Swift filter, ObjC class discovery
7. Flare-On "sudo" — Universal Binary
- Fat binary with x86_64 + ARM64 slices
- fold should handle universal binary format
- Validates: Mach-O fat binary parsing, arch selection
Using CTF Binaries with fold
# Download a challenge
wget https://mercury.picoctf.net/static/<hash>/vuln -O ctf-bin
# Scan binary
fold scan --mode binary --binary ctf-bin --format json
# Generate fuzz harness
fold fuzz prep --binary ctf-bin --output /tmp/ctf-fuzz
What fold Currently Cannot Handle
| Gap | Example | Needed Feature |
|---|---|---|
| Packed binaries | UPX/ASPack | Unpacking support or skip packed sections |
| Fat binaries | Universal Mach-O | Arch selection (always picks first) |
| PE IAT recovery | Import Address Table | PE format parser (currently Mach-O only) |
| Encrypted strings | XOR/RC4-obfuscated | Emulation or pattern heuristics |