Repeater: Manual Request Manipulation
The Problem Repeater Solves
You have captured a request in Burp Proxy and want to test how the server responds when you change a parameter. You could edit the request in the browser dev tools, but that is slow and limited. Repeater gives you a dedicated workspace to modify any part of a request — method, path, headers, cookies, body — and resend it as many times as you need, with full visibility into each response.
Sending a Request to Repeater
Right-click any request in Proxy > HTTP history (or the site map) and select Send to Repeater. The request opens in a new Repeater tab. You see the raw request on the left and the response on the right. Edit anything in the request, then click Go to send it.
What You Can Modify
Every byte of the request is editable:
- Request line — Change HTTP method (GET to POST), path, or query parameters
- Headers — Modify Host, User-Agent, Content-Type, Authorization, or add custom headers
- Cookies — Edit session tokens, role identifiers, or any cookie value
- Body — For POST requests, modify form data, JSON payloads, or XML content
Practical Example: Testing IDOR
Suppose you captured a request:
GET /api/documents/1001 HTTP/1.1
Host: target.example.com
Cookie: session=abc123
You suspect an Insecure Direct Object Reference (IDOR) vulnerability. In Repeater, change the document ID:
GET /api/documents/1002 HTTP/1.1
Click Go. If the response contains another user's document, you have confirmed IDOR. You can rapidly iterate through IDs 1002, 1003, 1004 to map the exposure.
Repeater Workflow Tips
- Use the Inspector — The right-side panel provides structured views of parameters, headers, and JSON bodies, making targeted edits easier than raw text editing
- Compare responses — Send the same request twice with one variable changed and diff the responses to spot behavioral differences
- Change Content-Length — When modifying POST bodies, Burp automatically recalculates Content-Length when you click Go, so you do not need to update it manually
- URL-encode carefully — If you insert special characters in parameters, use the URL-encode key shortcut (Ctrl+U) to ensure proper encoding
Intruder: Automated Parameter Attacks
The Problem Intruder Solves
Repeater is powerful for testing one parameter at a time, but what if you need to test hundreds of values? Manually changing a parameter and clicking Go 500 times is impractical. Intruder automates this: you define a request template, mark the positions to fuzz, provide a payload list, and Burp sends all requests and collects the responses.
Setting Up an Intruder Attack
Step 1: Right-click a request and select Send to Intruder.
Step 2: Go to the Positions tab. Burp auto-detects parameters and marks them with § symbols. For example:
GET /api/documents/§1001§ HTTP/1.1
The §1001§ marks the payload position. You can add or remove positions manually using the Add § and Clear § buttons.
Step 3: Choose an Attack Type:
- Sniper — Tests one position at a time with each payload. Best for single-parameter fuzzing.
- Battering ram — Tests all positions simultaneously with the same payload. Best for testing the same value in multiple fields.
- Pitchfork — Tests multiple positions with corresponding payloads from different lists. Best for username/password pair testing.
- Cluster bomb — Tests all combinations of multiple payload lists. Best for credential stuffing or multi-parameter brute force.
Step 4: Go to the Payloads tab and configure your payload set. You can:
- Paste a simple list of values
- Load a wordlist file
- Use built-in payload lists (numbers, dates, brute forcers)
- Apply payload processing rules (URL-encode, hash, prefix/suffix)
Practical Example: Fuzzing for Hidden Parameters
You want to discover hidden API parameters. Send a request to Intruder, mark the query string value as a position, and load a wordlist of common parameter names:
GET /api/search?q=test§&debug=true HTTP/1.1
Actually, a better approach: mark the entire query string and fuzz with parameter names:
GET /api/search?§param§=value HTTP/1.1
Payload list: debug, admin, test, verbose, format, callback, api_key
If the server responds differently to ?debug=true (e.g., verbose error messages or debug output), you have found a hidden feature.
Analyzing Intruder Results
After the attack completes, Intruder displays a table of all requests and responses. Sort by:
- Response length — Different lengths often indicate different behavior
- Status code — 200 vs 500 vs 403 reveals different handling
- Response time — Time-based differences can indicate SQL injection or command execution
Use Grep - Match in the Options tab to flag responses containing specific strings (e.g., "error", "admin", "success"). This automatically highlights interesting results in the table.
Advanced Techniques and Analysis
Payload Processing Rules
Intruder lets you transform payloads before sending. In the Payloads tab, under Payload Processing, you can add rules:
- URL-encode — Ensures special characters do not break the request
- Base64-encode — Useful for parameters that expect encoded values
- Hash (MD5/SHA1) — Useful when the server expects hashed input
- Prefix/Suffix — Add static text around each payload
- Match/replace — Replace specific patterns within payloads
Example: You are fuzzing a JWT token payload. You need Base64url-encode each test value. Add a processing rule: Base64-encode, then replace + with - and / with _ (Base64url variant).
Grep Extractors for Response Analysis
When responses contain dynamic content (CSRF tokens, session IDs), you need to extract and correlate data. Grep - Extract in the Options tab lets you define regex patterns to pull specific data from each response and display it as a column in the results table.
Example: You are testing password reset tokens. Extract the token from each response:
Pattern: token=([a-f0-9]{32})
Each row in the results table now shows the extracted token, making it easy to correlate which payload produced which token.
Resource Management
Intruder attacks can generate significant load. Use these controls:
- Request threads — Limit concurrent requests (default 10, reduce for fragile servers)
- Throttle — Add delay between requests to avoid overwhelming the target
- Pause/Resume — You can pause an active attack, adjust settings, and resume
When to Use Repeater vs Intruder
| Scenario | Tool | Reason |
|---|---|---|
| Test one parameter change | Repeater | Quick, interactive, immediate feedback |
| Fuzz a parameter with 100 values | Intruder | Automated, collects all responses |
| Test multiple parameters simultaneously | Intruder (Cluster bomb) | Tests all combinations |
| Iterate on a single request manually | Repeater | Full control over each request |
| Discover hidden parameters | Intruder (Sniper) | Systematic wordlist testing |
| Test credential pairs | Intruder (Pitchfork) | Correlated username/password lists |
Common Pitfalls
- Not clearing auto-marked positions — Burp may mark positions you do not want to fuzz; clear them before starting
- Ignoring response length — The default sort should be by response length; identical lengths often mean identical behavior
- Overwhelming the target — High thread counts on production systems can cause denial of service; always test against staging when possible
- Missing rate limiting — Some applications rate-limit requests; Intruder will show identical error responses that look like findings but are actually rate-limit responses
Practice Problems
You captured a GET request to /api/documents/1001 with a session cookie. You suspect IDOR. Describe how you would use Repeater to test this and what response would confirm the vulnerability.
Solution
1. Send the request to Repeater. 2. Change the document ID from 1001 to 1002. 3. Click Go. 4. If the response contains document content belonging to a different user (different owner, different data), IDOR is confirmed. 5. Iterate through several IDs (1002, 1003, 1004) to map the scope of exposure. 6. Also test with a different user's session cookie to confirm cross-user access. You want to fuzz the 'category' parameter on /api/products?category=electronics with a wordlist of 50 category names. Describe the exact Intruder configuration steps.
Solution
1. Send the request to Intruder. 2. In Positions tab, clear all auto-marked positions, then manually mark only the 'electronics' value: category=§electronics§. 3. Set attack type to Sniper. 4. In Payloads tab, load the wordlist file containing 50 category names. 5. Optionally add a Grep - Match rule for 'error' or 'exception' to flag interesting responses. 6. Click 'Start attack.' 7. After completion, sort results by response length to identify categories that return different data. Quiz
1. What is the key difference between Repeater and Intruder?
2. In Intruder, what does the Sniper attack type do?
3. You are testing an API endpoint /api/users?id=5 and want to fuzz the 'id' parameter with values 1-100. Which Intruder configuration is correct?
4. After an Intruder attack completes, what is the most effective way to identify interesting responses?
Flashcards
Question
What is Burp Repeater used for?
Click to reveal answer
Answer
Manual modification and resending of individual requests. You edit any part of the request (method, path, headers, body) and resend it repeatedly to observe server responses.
Question
What are the four Intruder attack types?
Click to reveal answer
Answer
Sniper (one position at a time), Battering ram (all positions same payload), Pitchfork (multiple positions with corresponding lists), Cluster bomb (all combinations of multiple lists).
Question
How do you mark a payload position in Intruder?
Click to reveal answer
Answer
In the Positions tab, select the text you want to fuzz and click 'Add §' to wrap it with section symbols (§value§). Burp auto-detects parameters but you can manually adjust.
Question
What is Grep - Match in Intruder used for?
Click to reveal answer
Answer
Flagging responses that contain specific strings (e.g., 'error', 'admin'). Matching responses are highlighted in the results table, making it easy to identify interesting results.
Question
When should you use Repeater vs Intruder?
Click to reveal answer
Answer
Use Repeater for testing one or a few parameter changes interactively. Use Intruder when you need to test many payload values against one or more positions automatically.
Revision Notes
Key Takeaways
- 1. Repeater is for manual, one-at-a-time request modification and resending
- 2. Intruder automates sending many requests with varying payload values
- 3. Sniper attack type tests one position at a time — most common for parameter fuzzing
- 4. Payload positions are marked with § symbols in the Positions tab
- 5. Sort Intruder results by response length to quickly identify interesting responses
- 6. Grep - Match flags responses containing specific strings for easy analysis
Interview Tips
- • Describe a specific IDOR test you performed using Repeater — what parameter you changed and what response confirmed the vulnerability
- • Explain the difference between Sniper and Cluster bomb attack types with examples
- • Discuss how you analyze Intruder results — sorting by response length, using Grep - Match
- • Mention how you handle rate limiting and avoid overwhelming target servers during Intruder attacks
Cheat Sheet
Repeater and Intruder Workflows Cheat Sheet
Phase: Web Testing with Burp Suite | Level: intermediate
Repeater:
- Right-click request > Send to Repeater
- Edit any part of request, click Go to resend
- Best for: IDOR testing, parameter manipulation, quick iteration
Intruder Setup:
- Send request to Intruder
- Positions tab: mark payload positions with §
- Choose attack type (Sniper, Battering ram, Pitchfork, Cluster bomb)
- Payloads tab: load wordlist or define list
- Options tab: configure Grep - Match/Extract
- Start attack
Attack Types:
- Sniper — one position, one payload at a time
- Battering ram — all positions, same payload
- Pitchfork — multiple positions, corresponding lists
- Cluster bomb — all combinations of multiple lists
Analysis:
- Sort by response length to find behavioral differences
- Sort by status code to find different handling
- Use Grep - Match to flag responses containing keywords
Tags: burp-suite, web-testing
Continue Learning
Before You Start
- No prerequisites listed.