You can set the type of payload that you want to inject into the base request. Burp Intruder provides a range of options for auto-generating different types of payload, or you can use a simple wordlist.
To select a payload type, choose an option from the Payload type drop-down menu in the Payloads side panel. You can open or close the side panel by clicking the Payloads tab.
You can use predefined payload lists with many of the payload types. For more information, see Predefined payload lists.
You can customize each payload type in the Payload configuration field. Many payload types include the following basic configuration options:
This enables you to configure a simple list of strings that are used as payloads.
This enables you to configure a file from which to read payload strings at runtime.
You can use this payload type when a very large list of payloads is needed, to avoid holding the entire list in memory. One payload is read from each line of the file, hence payloads may not contain newline characters.
This enables you to generate payloads using permutations of characters or other items according to a given template.
You can define up to eight different positions in the template, and set each position with a list of items. You can use a separator between any positions. For example, you could set up an attack to iterate through all possible permutations of the template AA/11, with the first two positions cycling through A - Z, and the second two positions cycling through 0 - 9. This could be useful if, for example, a payroll application identifies individuals using a number of the form AA/11.
There are various ways to edit the list items:
To select a preconfigured setup for the custom iterator, click on the Preset schemes drop-down menu and select a scheme. The scheme can then be modified. You can choose from:
This enables you to apply character substitutions to each item in a list of strings.
You can use character substitution in password guessing attacks, for generating common variations on dictionary words.
The subsequent attack uses all permutations of substituted characters for each list item in turn. For example, for the substitutions e > 3 and t > 7, the item "peter" will generate the following payloads:
peter
p3ter
pe7er
p37er
pet3r
p3t3r
pe73r
p373r
This enables you to apply case modifications to each item in a list of strings.
You can use case modification in password guessing attacks, for generating case variations on dictionary words.
The subsequent attack adjusts the case of characters within each item in turn. Duplicate payloads are discarded. You can select from a range of case modification options:
For example, if all modification options are selected, the item "Peter Wiener" will generate the following payloads:
Peter Wiener
peter wiener
PETER WIENER
Peter wiener
This enables you to extract text from the response to the previous request, and use it as the payload for the current request.
You can use this payload type when you need to work recursively to extract useful data or deliver an exploit. For example, to extract the contents of a database via SQL injection by recursively injecting queries of the form:
UNION SELECT name FROM sysobjects WHERE name > 'a'The server's error message discloses the name of the first database object:
Syntax error converting the varchar value 'accounts' to a column of data type int.The query is then repeated using "accounts" to identify the next object. This task can be easily automated using recursive grep payloads to quickly list all objects within the database.
The following settings must be configured:
Attacks using the recursive grep payload type must use a resource pool with a max concurrent request of 1. For more information on resource pools, see Intruder resource pools.
This enables you to generate payloads from a list of items by replacing a specified character with illegal Unicode-encodings of another character.
You can use this payload type to attempt to bypass filters designed to block certain characters. For example, defenses against file path traversal attacks which match on expected encodings of the ../ and ..\ sequences.
The available settings are described below:
You can specify whether overlong encoding is used, and set a maximum length of up to 6 bytes.
This allows you to represent basic ASCII characters (0x00 - 0x7F) in the Unicode scheme. They are usually correctly represented using a single byte.
Do illegal UTF-8 - Generate three additional encodings for each continuation byte in turn, when the maximum overlong UTF-8 length is set to two bytes or more.
These settings control how the generated byte sequences are represented using hexadecimal notation:
0x1G may be interpreted as decimal 32. Further, if illegal hex characters are used in the first position of a two digit hex code, then the resulting decoding overflows the maximum value of a single byte, and in this situation some hex decoders only use the 8 least significant bits of the resulting number. So 0xG1 may be decoded as decimal 257, which is then interpreted as decimal 1. Each legal two-digit hex code has between 4 and 6 corresponding illegal hex representations which are interpreted as that same hex code if decoded as described above. If the Do illegal hex setting is selected, then Burp will generate all possible illegal hex encodings of each byte in the list of illegally-encoded items.
These settings control the appearance of hex-encoded payloads:
This setting enables you to:
This can be useful if large overlong encodings are being used or maximum permutations have been selected, as these settings may generate huge numbers of illegal encodings.
These settings control the replacement of characters within list items:
This enables you to generate payloads based on blocks of a specified character or string.
You can use this payload type to:
The following settings are available:
This enables you to generate numeric payloads within a given range and in a specified format.
You can configure various aspects of the number range:
If you need to cycle through a range of numbers containing many total digits (more than approximately 12), then it is more reliable to use your payload markers to highlight a sub-portion of the larger number within the attack template, and generate numeric payloads containing correspondingly fewer digits.
This is because Burp uses double-precision floating point numbers for both the number range configuration and the internal state of the payload generator at runtime. Some loss of precision is to be expected when dealing with very large numbers or very precise fractional numbers.
You can also configure various aspects of the number format:
To indicate that no minimum or maximum size should be enforced, leave any of the digit settings blank.
As you edit the number format, example numbers with the minimum and maximum number of digits are shown.
This enables you to generate date payloads within a given range and in a specified format.
You can use this payload type for:
The following settings are available:
E
|
Sat
|
EEEE
|
Saturday
|
d
|
7
|
dd
|
07
|
M
|
6
|
MM
|
06
|
MMM
|
Jun
|
MMMM
|
June
|
yy
|
03
|
yyyy
|
2003
|
/ . :
|
/ . :
|
This enables you to generate payloads of specified lengths that contain all permutations of a specified character set.
The following settings are available:
This enables you to generate payloads whose value is an empty string. You can use this to repeatedly issue the base request unmodified - you don't need to configure payload positions.
You can use this payload type for a variety of attacks, for example:
You can generate a specified number of null payloads, or continue indefinitely.
This enables you to modify the value of each character position of an input. The input could be the base value of each payload position, or a specified string. The attack cycles through each item in turn, one character at a time, incrementing the ASCII code of that character by one.
You can use this payload type to test which parameter values, or parts of values, have an effect on the application's response. For example, you can use it to test which parts of a session token track session state. If you modify the value of an individual character within the token, and your request is still processed within your session, then it is likely that this character is not used to track your session.
This enables you to modify the value of each bit position of an input. The input could be the base value of each payload position, or a specified string. It cycles through each item, one character at a time, flipping each specified bit in turn.
The following settings are available:
For example, if the base value is "ab" then operating on the literal string and flipping all bits will result in the following payloads:
`b
cb
eb
ib
qb
Ab
!b
áb
ac
a`
af
aj
ar
aB
a"
aâ
Whereas treating "ab" as an ASCII hex string and flipping all bits will result in the following payloads:
aa
a9
af
a3
bb
8b
eb
2b
You can use the Bit flipper in similar situations to the Character frobber, but where you need finer-grained control. For example, if session tokens or other parameter values contain meaningful data encrypted with a block cipher in CBC mode, it may be possible to change parts of the decrypted data systematically by modifying bits within the preceding cipher block. You can use this payload type to determine the effects of modifying individual bits within the encrypted value.
This enables you to derive potential usernames from a list of names or email addresses, using various common schemes.
This payload type is useful if you are targeting a particular human user, and you do not know the username or email address scheme in use within an application.
For example, supplying the name "peter wiener" results in up to 115 possible usernames:
peterweiner
peter.wiener
wienerpeter
wiener.peter
peter
wiener
peterw
peter.w
wpeter
w.peter
pwiener
p.wiener
wienerp
wiener.p
...
You can configure a maximum number of payloads to generate per item in the list.
This enables you to shuffle blocks of ciphertext in ECB-encrypted data, to modify the decrypted cleartext and potentially interfere with application logic.
Because ECB ciphers encrypt each block of plaintext independently of others, identical blocks of plaintext encrypt into identical blocks of ciphertext (provided the same key is used), and vice versa. Hence, it is possible to shuffle blocks within a large piece of ciphertext with the effect of shuffling the corresponding blocks of decrypted plaintext. In some data (such as a structured session token with fields for username, user ID, role, and a timestamp) it may be possible to meaningfully alter the content of the decrypted data so as to interfere with application processing, and carry out unauthorized actions.
The following settings are available:
This enables you to invoke a Burp extension to generate payloads.
Click Select generator ... to select an extension-provided payload generator from the list. The extension must be registered as an Intruder payload generator.
This enables you to copy the value of the current payload to another payload position.
This payload type can be useful in various situations, for example:
This payload type enables you to copy the literal value of the payload, but you can also systematically derive the current payload from the value of a payload at another position. To do this, define an appropriate payload processing rule.
This generates and injects Burp Collaborator payloads. Each Collaborator payload includes a unique identifier that is a subdomain of the Collaborator server's domain. When certain vulnerabilities occur, the target application may use the injected payload to interact with the Collaborator server.
Select Include Collaborator server location to include the full Collaborator server address in your payloads. If this is not selected, only the Collaborator identifier is included.
If you use this payload type, you can view the details of any interactions with the Collaborator server in the attack results window.
Interactions are not shown in the Collaborator tab. To identify any deferred interactions with the Collaborator server, save the attack and monitor the Event log on the Dashboard.