πΊπΈ English | πͺπΈ EspaΓ±ol
FUFP (File Upload Fuzz Pack) is a curated personal collection of files designed to test, fuzz, and analyze file upload mechanisms in web applications.
It focuses on common file upload vulnerabilities such as improper extension filtering, MIME-type confusion, magic byte bypasses, double extensions, encoding tricks, and server-side execution risks.
β οΈ For authorized security testing only.
File upload functionalities are a frequent attack surface in web applications.
FUFP helps security testers, bug bounty hunters, and developers:
- Identify weak file type validation
- Test blacklist / whitelist implementations
- Detect MIME-type trust issues
- Discover extension parsing inconsistencies
- Assess server-side execution risks
- Evaluate archive handling and extraction behavior
FUFP is intended for manual testing, automation, and educational purposes.
FUFP/
βββ fufp.py # More information about this file below
βββ images/ # Image formats, polyglots, EXIF & header tricks
βββ documents/ # Text and document file formats
βββ scripts/ # Client-side and scripting languages
βββ web/ # Web-related formats (HTML, SVG, XML, CSS)
βββ server_side/ # Server-executed file extensions
βββ bypass_techniques/ # Extension & encoding bypass attempts
βββ binaries/ # Executable-like binary formats
βββ archives/ # Compressed and container files
βββ server_configs/ # Configuration-related files
βββ traversal_tests/ # Path traversal payload references
βββ magic_bytes/ # Header-based file type confusion
βββ mime_confusion/ # MIME-type mismatch cases
βββ oversized_files/ # Size-based and timing-related tests
βββ LICENSE
βββ README.md
βββ README_ES.md
FUFP includes a fully automated Python generator that creates the entire file upload fuzzing pack from scratch in a safe, reproducible, and controlled way.
The generator is designed with cross-platform filesystem limitations in mind (Windows/Linux/macOS) and avoids creating files that cannot exist on real filesystems (such as raw null bytes in filenames or forbidden characters). Instead, those edge cases are represented through accurate file contents and descriptive text files, ensuring realism without breaking portability.
python fufp.py- Generates the full File Upload Fuzz Pack
- Output directory:
FUFP - Safe mode (no active payloads)
- Minimal console output
-
-o, --output OUTPUTChoose where the FUFP directory will be created. Example:python fufp.py -o my_fufp_pack
-
-v, --verboseShows every file as it is created. Useful to understand what the generator is doing.python fufp.py -v
-
-q, --quietMinimal output. Overrides verbose mode if both are set.python fufp.py -q
-
--enable-dangerousβ οΈ Enables active payloads such aseval,system, andexec. Only use this for authorized security testing.python fufp.py --enable-dangerous
-
--versionDisplays the generator version and exits.python fufp.py --version
For most users:
python fufp.pyFor debugging or learning how (or what) files are generated:
python fufp.py -vFor Bug Bounty addicts (lol):
python genfufp.py -o FUFP-PREMIUM -v --enable-dangerous-
Deterministic generation
Every run produces the same structured output, making results reproducible and easy to version-control. -
Strict text vs binary separation
Files are written using the correct mode (textorbinary) to accurately simulate real-world uploads. -
Real magic bytes
Binary formats (PNG, JPEG, PDF, ZIP, PE, ELF, etc.) include valid magic headers to test content-based validation. -
Safe by default
Potentially dangerous payloads (e.g.system,exec,eval) are disabled by default and replaced with inert markers. -
Optional dangerous payloads
Advanced testers can explicitly enable active payloads via a command-line flag, making intent clear and explicit. -
No external dependencies
Uses only the Python standard library, ensuring easy execution on most systems.
This script exists to:
- Remove the manual effort of crafting hundreds of test files
- Ensure consistency across testing environments
- Allow easy regeneration, auditing, and sharing of the fuzzing pack
The generator itself is not an exploitation tool β it is a controlled file factory intended to support authorized security testing and research.
- Double extensions (
.php.jpg) - Case variations (
.PhP,.PHP) - Trailing dots (
.php.) - Multiple dots (
.php..,.php...) - Alternate PHP extensions (
.phtml,.php5,.phar, etc.)
- Content-Type mismatches
- Trust in client-supplied MIME headers
- Server-side MIME sniffing issues
- Valid file headers with dangerous extensions
- Executable files disguised as images or documents
- Polyglot-style payloads
- ZIPs containing scripts or config files
- Extraction and validation behavior
- Nested or misleading archive contents
- PHP, ASP, JSP, CFML, and related extensions
- Misconfigured upload directories
- Improper execution permissions
- Oversized uploads
- Timeout simulation
- Metadata-heavy files
Please note that this repository is github-safe, some test files are more dangerous, thats why the --enable-dangerous flag exist in the generation file (more info above)
- Select relevant files from FUFP
- Upload them via the target application's upload functionality
- Observe:
- Server responses
- File acceptance or rejection
- Renaming behavior
- Execution or rendering behavior
FUFP can be integrated into:
- Custom fuzzing scripts
- CI pipelines
- Burp / ZAP upload testing workflows
- Files are non-destructive
- Executables contain headers only, not real malware
- Dangerous payloads are disabled by default
- Designed to avoid accidental harm
Still, never upload these files to systems you do not own or have explicit permission to test.
This project is provided for educational and authorized security testing purposes only.
The author is not responsible for misuse, damage, or illegal activity resulting from the use of this repository.
By using FUFP, you agree to comply with all applicable laws and regulations.
- Bug bounty hunters
- Penetration testers
- Security researchers
- Web developers testing upload defenses
- Students learning web security
- This is not a malware repository
- No real exploits are shipped
- Focus is on detection, validation, and defensive testing
Pull requests are welcome if they:
- Add new relevant file types
- Improve bypass coverage
- Keep the pack safe and ethical
Made with <3 by URDev