1. Setup: Proxy, CA Certificate & Scope
Burp Suite sits between your browser and the target as a transparent HTTP proxy. All traffic flows through it so every request can be inspected, modified, and replayed.
Configuring the proxy listener
By default Burp listens on 127.0.0.1:8080. Configure your browser
(or use Burp's embedded Chromium) to route traffic through this address. For HTTPS,
you must install the Burp CA certificate so the browser trusts Burp's TLS interception.
- Navigate to
http://burpsuiteinside the proxied browser and download the CA cert. - Import it as a trusted root CA in your browser's certificate store.
- Set browser proxy to
127.0.0.1:8080(manual HTTP + HTTPS). - Visit any HTTPS site — you should see it appear in Burp's HTTP history.
Defining scope
Scope prevents noise from third-party assets (CDNs, analytics) cluttering your history. Go to Target → Scope and add your target domain with a regex if needed. Then in Proxy → Options enable "Drop all out-of-scope requests" so only target traffic appears in logs.
# Example scope entry — matches all subdomains
Protocol: Any
Host: .*\.target\.com
Port: .*
File: .*
2. Proxy — Intercepting & HTTP History
The Proxy tab is the core of Burp Suite. Every request your browser makes passes through it, and you can pause execution at any point to inspect or modify the raw HTTP.
Intercept mode
With intercept ON, Burp holds each request until you forward or drop it. You can edit any header, parameter, or body field in-flight before the server receives it. Use this for one-off quick modifications — for repeated testing, use Repeater instead.
HTTP History
The history tab logs every proxied request. Key workflow habits:
- Filter by scope — check "Show only in-scope items" to cut noise.
- Search by keyword —
Ctrl+Fon the response pane to find interesting strings liketoken,password,admin. - Right-click → Send to Repeater for any request worth replaying.
- Right-click → Send to Intruder to fuzz a parameter automatically.
- Right-click → Engagement tools → Find comments / Find scripts to extract JS endpoints.
WebSockets History
The WebSockets history tab captures WS frames separately. You can pause, modify, and replay individual frames — the basis of WebSocket injection attacks covered in the WebSocket Security post.
X-Forwarded-For: 127.0.0.1 to every request.
3. Target — Site Map & Scope Control
The Target tab builds a live tree of every URL you visit. It groups requests by host and path, giving you an instant map of the application surface.
Site map analysis
- Right-click any host → Spider this host to crawl all reachable links.
- Right-click → Engagement tools → Analyze target — Burp highlights interesting parameters, forms, and potential injection points.
- Look for endpoints that only appear in JS bundles but not in crawl results — those are often undocumented API routes. Use Find scripts to extract them.
Issue activity
After running the active scanner, all findings appear in the Target's issue list. Click any issue to see the exact request/response evidence Burp captured.
4. Repeater — Request Replay & Manual Exploitation
Repeater is the most-used tool in any pentest. It lets you modify and resend a request as many times as you want while watching the full response. Every manual exploit in this blog starts in Repeater.
Core workflow
- Find an interesting request in HTTP history.
- Right-click → Send to Repeater (
Ctrl+R). - Modify the request in the left pane — change a parameter, header, or body value.
- Click Send (
Ctrl+Enter) and analyze the response on the right. - Use the navigation arrows to move through your modification history.
What Repeater is used for across this blog
Take a search request to Repeater and modify the id parameter.
Adding ' AND 1=1-- vs ' AND 1=2-- produces different
responses — confirming boolean-based blind injection. You then iterate character
by character through SUBSTRING() calls to extract data.
→ Full methodology: SQL & NoSQL Injection deep-dive
Copy a JWT from the Authorization header into Repeater. Use the
JSON Web Tokens extension tab to decode it inline, change
alg to HS256, sign with the server's RS256 public key
as the HMAC secret, and send. If the server accepts the forged token — you have
algorithm confusion.
→ Full methodology: JWT Attacks deep-dive
Find a request that fetches a URL (webhook, image preview, PDF generator).
In Repeater change the URL to http://169.254.169.254/latest/meta-data/
or a Collaborator payload. Watch the response for cloud metadata or check
Collaborator for an out-of-band DNS callback.
→ Full methodology: SSRF deep-dive
Take a password-reset request into Repeater. Change the Host header
to your attacker domain and click Send. If the app uses the Host header to build the
reset link, the email sent to the victim contains your domain — you capture the token
when they click it.
→ Full methodology: HTTP Host Header & Smuggling deep-dive
5. Intruder — Automated Attacks & Fuzzing
Intruder automates sending many variations of a single request, replacing marked payload positions with values from a wordlist. It covers four attack types, each suited to a different scenario.
Defining payload positions
Send a request to Intruder (Ctrl+I). In the Positions
tab Burp auto-marks parameters with § § delimiters. Clear all markers and
manually wrap only the value you want to fuzz:
POST /login HTTP/1.1
Host: target.com
username=masaaki&password=§wrongpass§
Attack types
| Type | Positions | Best for |
|---|---|---|
| Sniper | One position, one list | Password brute force, parameter fuzzing |
| Battering Ram | Multiple positions, same list | Username=password style attacks |
| Pitchfork | Multiple positions, separate lists (paired) | Credential stuffing with known pairs |
| Cluster Bomb | Multiple positions, all combinations | Username × password matrix brute force |
Practical: brute-forcing a PIN with Sniper
POST /verify-otp HTTP/1.1
Host: target.com
Cookie: session=abc123
otp=§0000§
- Attack type: Sniper
- Payload type: Numbers — from 0 to 9999, step 1, min/max digits 4
- Options → Grep Match: add the string
Invalid OTP— unchecked rows are successful hits - Options → Request Engine → set threads to 20 (stay under rate limits)
- Start attack and sort by the grep match column
Practical: directory fuzzing with Sniper
GET /§FUZZ§ HTTP/1.1
Host: target.com
Use a wordlist like SecLists' Discovery/Web-Content/big.txt. Filter
results by response code — 200/301/403 are interesting, 404 is noise. Add a
Grep Extract to pull the <title> tag from each response
for quick triage.
Practical: CSRF token bypass with Pitchfork
Some apps tie the CSRF token to the session but generate a new token on every page load. Use a macro (Settings → Sessions → Macros) to fetch a fresh token before each Intruder request, then inject it at position 2 while fuzzing position 1.
→ Full methodology: CSRF Attacks deep-dive
6. Scanner — Passive & Active Crawling
Burp Scanner (Professional only) combines a crawler with an active auditor. It can find XSS, SQLi, XXE, SSRF, and dozens of other vulnerability classes automatically, though manual verification is always required.
Passive scanning
Passive scanning runs continuously on all proxied traffic without sending additional requests. It flags issues like missing security headers, mixed content, reflected parameters, and information disclosure in responses. Zero extra noise to the server.
Active scanning
Active scanning sends crafted payloads to confirm vulnerabilities. Right-click any request in HTTP history → Scan → choose scan configuration. Use "Audit checks — all insertions" for thoroughness or "Audit checks — critical issues only" for speed.
Scan configuration presets
| Config | Use case | Speed |
|---|---|---|
| Crawl only | Map application surface without testing | Fast |
| Audit – light | Quick bug bounty triage | Medium |
| Audit – all insertions | Thorough pentest with full coverage | Slow |
| Never stop crawl / audit | Long overnight engagement | Variable |
7. Decoder & Comparer
Decoder
Decoder is a multi-step encode/decode/hash tool. Paste any string and apply transformations in sequence. Essential for:
- Base64 cookies — decode a serialised object, modify a field, re-encode and replace
- URL encoding — double-encode payloads to bypass WAF rules (
%253c→%3c→<) - JWT headers/payloads — base64url decode each part to inspect claims
- Hash identification — paste a hash and Burp tries to detect the algorithm
# Multi-step decode example — ViewState analysis
Raw cookie value → Base64 decode → .NET serialised object
Modify field → Base64 encode → paste back into cookie
# Double URL encode bypass
Original: <script>
Encoded: %3cscript%3e # blocked by WAF
Double: %253cscript%253e # WAF decodes once → still encoded → passes
Comparer
Comparer diffs two requests or responses side-by-side at the word or byte level. Critical uses:
- Spot the exact difference between a valid/invalid token response in blind auth attacks
- Compare responses from two user accounts to find data leaking across sessions (IDOR)
- Diff two serialised objects after modifying a field to confirm your change was applied
8. Sequencer — Token Entropy Analysis
Sequencer measures the randomness of tokens — session cookies, CSRF tokens, password reset links. Predictable tokens are exploitable.
Running a live capture
- Find a request that generates a token (login, forgot password, register).
- Send it to Sequencer → Live capture.
- Select the response field containing the token (cookie value, JSON field).
- Start capture — Burp fires the request hundreds of times and collects tokens.
- Click Analyze now after 100+ samples.
The result shows effective entropy in bits. Tokens with <32 bits of entropy should be flagged as predictable. Burp shows which character positions contribute the least randomness — those are the positions to focus a brute-force on.
sess_[MD5 of timestamp].
Sequencer showed 19 bits of effective entropy — the timestamp component was the entire source
of randomness. Knowing the approximate login time allows predicting valid session tokens.
9. Collaborator — Out-of-Band Detection
Burp Collaborator is an external server controlled by PortSwigger (or self-hosted) that receives DNS lookups, HTTP requests, and SMTP connections. It lets you detect vulnerabilities that produce no visible output in the HTTP response.
How it works
# Generate a Collaborator payload
Burp menu → Burp Collaborator client → Copy to clipboard
# Example payload
k9x2a3b.oastify.com
# Inject it into an SSRF-prone parameter
GET /fetch?url=http://k9x2a3b.oastify.com/ HTTP/1.1
# Or an XXE payload
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://k9x2a3b.oastify.com/">]>
# Poll for interactions in the Collaborator client
→ DNS lookup received from 203.0.113.42 at 14:32:05 UTC
→ HTTP GET received: / (User-Agent: Java/1.8)
Where Collaborator is used across this blog
- Blind SSRF — inject Collaborator URL into any user-controlled URL parameter → SSRF deep-dive
- Blind XXE — external DTD that triggers DNS callback → XXE deep-dive
- Blind SQLi (OOB) —
xp_dirtreeorLOAD_FILE()targeting Collaborator UNC path → SQL Injection deep-dive - Blind OS command injection —
nslookuporcurlto Collaborator address
interactsh-client locally and get a unique domain you control
entirely — useful for environments that block PortSwigger's Collaborator server.
10. Extensions — Power-User Toolkit
Burp's extension API (BApp Store + custom) transforms it from a proxy into a full testing platform. These are the extensions active in every engagement:
Sends thousands of requests per second using a custom Python script. Bypasses Burp Community's rate throttle. Essential for race conditions (single-packet attack), brute force, and parameter fuzzing at scale.
# Turbo Intruder script skeleton
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=30,
requestsPerConnection=100,
pipeline=True)
for word in wordlists.clipboard:
engine.queue(target.req, word.rstrip())
def handleResponse(req, interesting):
if req.status != 404:
table.add(req)
→ Used in: Race Conditions, Authentication Vulnerabilities
Advanced HTTP logging with a powerful query language for filtering. You can write
expressions like Response.Status == 200 AND Request.Path CONTAINS "api"
to surface specific traffic. Saves logs to CSV for offline analysis. Far more flexible
than Burp's built-in filter.
Inline encoding/decoding tags that auto-transform payload values in real time.
Write <@base64>my payload<@/base64> in any Burp field and it
encodes on the fly. Stack multiple encodings. Invaluable for WAF bypass work and
complex serialisation attacks.
# Stack encodings inline — Hackvertor syntax
<@urlencode><@base64><script>alert(1)</script><@/base64><@/urlencode>
Adds a dedicated JWT tab to Repeater and Intruder. Decode, modify, and re-sign tokens inline. Generates RSA/EC key pairs for JWK injection attacks. Automates the algorithm confusion attack workflow with one click.
→ Used in: JWT Attacks
Discovers hidden GET/POST parameters and HTTP headers by fuzzing with a massive wordlist and detecting any difference in response (size, status, caching behaviour). Critical for finding unkeyed cache inputs and hidden debug parameters.
→ Used in: Web Cache Attacks
Automates detection of CL.TE and TE.CL desync vulnerabilities. Sends probe requests and detects timing differences that indicate a smuggling gadget. Also supports H2 desync detection for HTTP/2 downgrade paths.
→ Used in: HTTP Request Smuggling
Extends the built-in scanner with additional checks: cached path confusion, CORS misconfigurations, Dangling Markup, broken link hijacking, and a range of template injection payloads (SSTI). Runs passively on all proxied traffic.
Right-click any POST request → Extensions → CSRF PoC Generator. Produces a
ready-to-host HTML form that recreates the request cross-origin. Adjust for
JSON bodies by switching to fetch() with text/plain
content type to bypass preflight.
→ Used in: CSRF Attacks
11. Full Pentest Workflow
This is the standard workflow used across all web application engagements and bug bounty programs:
- Scope and setup — define target in Scope, configure proxy, install CA cert.
- Manual browse — walk through every feature authenticated and unauthenticated. Let Burp build the site map.
- Passive scan — review passive findings. Fix trivial issues (missing headers). Note interesting parameters.
- Spider / crawl — run the crawler with Burp's built-in or through Param Miner to find hidden paths.
- Active scan — run active audit on in-scope hosts. Review confirmed issues first.
- Manual testing — for each interesting endpoint: send to Repeater, test authentication, authorisation, and injection. Use Intruder for brute force / fuzzing.
- OOB testing — inject Collaborator payloads into any parameter that could trigger server-side requests.
- Report — for each finding: screenshot request/response from Burp, write reproduction steps, assess CVSS severity.
Ctrl+R = Send to Repeater ·
Ctrl+I = Send to Intruder ·
Ctrl+S = Send to Scanner ·
Ctrl+Enter = Send request (Repeater) ·
F = Forward (Proxy intercept)
12. Deep-Dive Attack Posts
Every attack technique below was demonstrated using Burp Suite as the primary tool. Each post goes beyond basics — medium to advanced level only.
Authentication Vulnerabilities
Username enumeration, 2FA bypasses, password reset poisoning, brute force bypass techniques.
SQL & NoSQL Injection
Blind SQLi extraction, OOB DNS exfiltration, second-order injection, MongoDB operator attacks.
XSS Advanced
DOM sinks, CSP bypasses, mutation XSS, dangling markup, account takeover chain.
CSRF Attacks
Token bypass, SameSite abuse, content-type tricks, Referer bypass, multi-step CSRF.
CORS Misconfigurations
Origin reflection, null origin, subdomain takeover chain, credential theft PoC.
SSRF
Cloud metadata, IP encoding bypasses, DNS rebinding, SSRF to RCE via Redis.
JWT Attacks
Algorithm confusion, alg:none, JWK/JKU injection, kid SQLi, hashcat cracking.
XXE Injection
Blind OOB, external DTD, error-based, SVG/DOCX vectors, XInclude, XSLT.
Host Header & Smuggling
Password reset poisoning, CL.TE / TE.CL desync, victim capture, H2 desync.
File Upload & Path Traversal
Extension bypass, polyglot files, ImageTragick, encoded traversal, Zip Slip.
API & GraphQL
Mass assignment, BOLA/BFLA, introspection bypass, query batching, mutation IDOR.
Race Conditions
Single-packet HTTP/2 attack, TOCTOU, Turbo Intruder scripts, limit overrun.