πŸ’‰Payloads

Payloads are the test strings injected into insertion points during active scanning. Each profile can define multiple payloads, and each payload is tested independently against every matching insertion point.

πŸ“ Payload Format

Payloads are stored as an array of strings. Each entry has the format:

enabled,payload_value
  • βœ… true, prefix β€” Payload is enabled and will be used during scanning

  • ❌ false, prefix β€” Payload is disabled (preserved for later use, not sent during scans)

πŸ“š Examples

"Payloads": [
  "true,<script>alert(1)</script>",
  "true,\"><img src=x onerror=alert(1)>",
  "false,<svg onload=alert(1)>",
  "true,' OR '1'='1",
  "true,http://{REDIRECT_DOMAIN}"
]

πŸ”§ Variables in Payloads

Payloads support dynamic variables that are replaced at runtime:

🌐 Global Variables (User-Configurable)

Variable
Default Value
Description

{REDIRECT_DOMAIN}

bountysecurity.ai

πŸ”„ Domain for redirect/SSRF testing

{ATTACKER_DOMAIN}

yourdomain.com

πŸ΄β€β˜ οΈ Attacker-controlled domain

{XXE_FILE}

/etc/passwd

πŸ“ File path for XXE testing (Linux)

{XXE_GREP}

root:x

πŸ” Expected content for XXE match (Linux)

{XXE_WIN_FILE}

c:/boot.ini

πŸ“ File path for XXE testing (Windows)

{XXE_WIN_GREP}

boot loader

πŸ” Expected content for XXE match (Windows)

{RCE_FILE}

/etc/passwd

πŸ“ File path for RCE testing

{RCE_COMMAND}

id

⚑ Command for RCE testing

πŸ“‘ Context Variables (Auto-Populated)

Variable
Description

{CURRENT_HOST}

πŸ–₯️ Target hostname

{CURRENT_PROTOCOL}

πŸ”’ http or https

{CURRENT_PORT}

πŸ”’ Target port number

{CURRENT_URL}

πŸ”— Full request URL

{CURRENT_PATH}

πŸ“‚ URL path component

{CURRENT_QUERY}

❓ Query string

{CURRENT_FILE}

πŸ“„ File component of URL

{CURRENT_METHOD}

πŸ“‘ HTTP method (GET/POST)

{CURRENT_SUBDOMAIN}

🌐 Extracted subdomain

{CURRENT_INSERTION_POINT_VALUE}

πŸ“ Current value of the insertion point

{CURRENT_INSERTION_POINT_NAME}

🏷️ Name of the insertion point

{CURRENT_USER_AGENT}

πŸ–₯️ User-Agent header value

{CURRENT_COOKIES}

πŸͺ Cookie header value

{CURRENT_REFERER}

πŸ”— Referer header value

{CURRENT_ORIGIN}

🌐 Origin header value

{CURRENT_CONTENT_TYPE}

πŸ“„ Content-Type header value

{CURRENT_ACCEPT}

βœ… Accept header value

{CURRENT_ACCEPT_LANGUAGE}

🌍 Accept-Language header value

{CURRENT_ACCEPT_ENCODING}

πŸ“¦ Accept-Encoding header value

{CURRENT_CONTENT_LENGTH}

πŸ“ Content-Length header value

⚑ Special Variables

Variable
Description

{BC}

🌐 Burp Collaborator domain (generates a unique subdomain)

{RANDOM}

🎲 Unique random identifier (ULID)

{RANDOM_ALPHANUM_8}

πŸ”€ 8-character random alphanumeric string

{RANDOM_ALPHANUM_16}

πŸ”€ 16-character random alphanumeric string

See Global Variables for complete documentation.

πŸ“ Loading Payloads from File

Instead of defining payloads inline, you can load them from an external text file:

  1. Set the payloadsFile field to the file path

  2. The file should contain one payload per line

  3. βœ… File payloads are used in addition to any inline payloads

πŸ“ Payload Position

The payloadPosition field controls how the payload is placed relative to the original value:

Value
Mode
Behavior

1

πŸ”„ Replace

Replaces the original value entirely

2

βž• Append

Appends the payload after the original value

3

⬅️ Insert

Inserts the payload before the original value

πŸ“ Example

Original parameter: name=John

Position
Result

πŸ”„ Replace

name=<payload>

βž• Append

name=John<payload>

⬅️ Insert

name=<payload>John

πŸ” Payload Encoding

Payloads can be transformed with encoding before injection. See Payload Encoding.

βš™οΈ Payload Processing

The full payload processing pipeline:

  1. πŸ“₯ Load payloads from inline list and/or file

  2. βœ… Filter enabled payloads (prefix true,)

  3. πŸ” Apply encoders (URL-encode, HTML-encode, Base64, Unicode)

  4. πŸ”§ Replace variables ({REDIRECT_DOMAIN}, {BC}, {CURRENT_HOST}, etc.)

  5. πŸ’‰ Inject into insertion point at configured position (replace/append/insert)

πŸ’‘ Tips

  • πŸ”§ Use variables instead of hardcoded values β€” this makes profiles reusable across different targets

  • ❌ Disable unused payloads with false, prefix instead of deleting them

  • πŸ“‚ Group related payloads β€” Create separate profiles for different payload categories (e.g., XSS reflected vs stored)

  • πŸ“ Use {CURRENT_INSERTION_POINT_VALUE} to preserve the original value when appending test strings (e.g., parameter pollution)

  • 🌐 Use {BC} for out-of-band detection when the vulnerability can't be confirmed from the HTTP response alone

Last updated