Purpose-built upload request mutations for Caido, right where you test.
UploadSmith helps bug bounty hunters and penetration testers quickly mutate upload requests from Caido. Replace selected text with common Content-Type values, filename extension variants, and magic byte prefixes without leaving the request editor.
UploadSmith is local-only. It does not send requests, run active scans, use telemetry, or call external services.
- Context-menu helpers for upload request testing
- Content-Type presets such as
image/jpeg,image/png,image/svg+xml,application/pdf, andapplication/octet-stream - Extension variants such as
.php.jpg,.phar.jpg,.php%00.jpg, and.aspx:.jpg - Magic byte presets for JPEG, PNG, GIF, PDF, ZIP, WebP, and SVG
Prepend:*actions for adding magic bytes before selected file content- Searchable preset library inside the UploadSmith page
- Custom presets for Content-Type, Extension, and Magic Byte values
- Per-preset context-menu checkbox
- Import/export JSON for sharing preset packs
- Reset context-menu selections back to UploadSmith defaults
Download the latest plugin_package.zip from the Releases page, then install it in Caido:
- Open Caido
- Go to
Plugins - Click
Install Package - Select
plugin_package.zip - Reload Caido if prompted
- Open a request in Caido Replay, HTTP History, or another request editor
- Select the text you want to replace, such as a multipart
Content-Type, filename extension, or file body content - Right-click the request editor
- Choose
Plugins -> UploadSmith -> <preset>
Example:
Content-Disposition: form-data; name="file"; filename="avatar.jpg"
Content-Type: text/plainSelect text/plain, then choose:
Content-Type: image/jpeg
The selected value becomes:
Content-Type: image/jpegUse Prepend:* when you want to keep the selected file body and add a magic byte prefix before it.
Example flow:
- Select the file body content
- Choose
Prepend: JPEG - UploadSmith replaces the selection with:
<JPEG magic bytes><original selected content>
Magic Byte:* replaces the selection. Prepend:* preserves the selection and prefixes it.
Open the UploadSmith sidebar page to manage presets.
- Use search to find presets that are not in the context-menu shortlist
- Use
Copyto copy any preset value - Use
Context menucheckboxes to choose which presets appear in the right-click menu - Use
Add Custom Presetto create your own values - Use
Reset Context Menuto restore the default shortlist
Caido does not currently expose runtime unregister/reorder APIs for context-menu commands. After changing context-menu selections, reload Caido so UploadSmith can rebuild the menu in category order.
Use Export JSON to share custom presets and context-menu selections. Use Import JSON to load them into another Caido workspace.
Example import file:
{
"version": 1,
"exportedAt": "2026-06-23T00:00:00.000Z",
"customPresets": [
{
"id": "custom-team-php16-jpg",
"category": "Extension",
"label": ".php16.jpg",
"value": ".php16.jpg",
"description": "Team-specific extension variant.",
"showInMenu": true
},
{
"id": "custom-html-content-type",
"category": "Content-Type",
"label": "text/html",
"value": "text/html",
"description": "HTML content type for served-content tests.",
"showInMenu": false
}
],
"menuPresetIds": [
"content-type-image-jpeg",
"content-type-image-png",
"content-type-svg",
"content-type-pdf",
"content-type-octet-stream",
"extension-php-jpg",
"extension-phar-jpg",
"extension-php-null-jpg",
"extension-aspx-colon-jpg",
"magic-jpeg",
"magic-png",
"magic-gif89a",
"magic-pdf",
"magic-zip",
"magic-svg"
]
}Valid custom preset categories:
Content-Type
Extension
Magic Byte
Screenshots can be added here before publishing to the Caido store:
- Context menu preset selection
- UploadSmith preset library
- Custom preset and context-menu checkbox
- Import/export controls
Install dependencies:
pnpm installBuild the plugin package:
pnpm buildThe installable package is generated at:
dist/plugin_package.zip
- No telemetry
- No external services
- No internet-loaded assets
- No auto-update mechanism
- No active scanning
- No automatic request sending
- No bundled web shells or exploit payload execution
UploadSmith only edits or copies selected text inside Caido.
Inspired by common upload-testing workflows such as magic byte selection and upload request mutation helpers. UploadSmith does not copy or bundle code from those projects.
MIT