<< All versions
Skill v1.0.0
currentAutomated scan100/100portswigger/http-terminator/simplify-vector
──Details
PublishedNovember 5, 2026 at 04:54 PM
Content Hashsha256:2acb113f7a8feee6...
Git SHA874682cdbdd1
──Files
Files (1 file, 2.2 KB)
SKILL.md2.2 KBactive
SKILL.md · 53 lines · 2.2 KB
name: simplify-vector description: simplify/minimise a HTTP request to identify the minimum requirements to trigger the behaviour metadata: version: "1.0.0"
Request Simplification
Iteratively simplifies an HTTP request to find the minimal trigger for a behavior.
How to use
- Copy the template
simplify-vector.py - Set
request_to_simplifyto the full request that triggers the behavior - Set
success_fingerprintto a string that appears in the response ONLY when the behavior triggers - Run via turbo simulator MCP
Configuration
python
request_to_simplify = '''POST /path HTTP/1.1\r\nHost: example.com\r\n...\r\n\r\n'''success_fingerprint = 'unique-string-in-triggered-response'
Choosing a good fingerprint
The fingerprint must be UNIQUE to the triggered behavior. Bad fingerprints cause over-simplification.
For desync/response concatenation:
- Use text from the FIRST response (e.g.,
Apache Serverfrom a front-end 400 error) - Or use something that only appears when both responses are concatenated
Avoid:
- Strings that appear in normal responses (e.g., domain names, app names)
- Generic error messages that appear in multiple error types
Simplification phases
- Normalise protocol - if HTTP/1.0 or HTTP/2, tries changing to HTTP/1.1
- Try GET method - if not already GET, tries changing to GET
- Simplify path - tries changing path to
/ - Remove headers - tries removing each header (except Host)
- Try canonical values - for each surviving header, tries replacing its value with
x, then a normal value for that header; keeps the simplest value that still triggers. Retried (default 3x) so a flaky miss doesn't wrongly mark a value as essential. This reveals when an unusual-looking value (e.g.Content-Type: multipart/byteranges) isn't actually required — something deletion alone can never discover. - Remove words - for remaining headers, tries removing words from values
- Remove characters - tries removing individual characters from values
Output
kept:*- simplification was kept (fingerprint still present)reverted:*- simplification was reverted (fingerprint disappeared)FINAL-MINIMAL- the minimal trigger