Burp Suite

The standard web application security testing platform. An intercepting proxy that lets you capture, inspect, modify, and replay HTTP/HTTPS requests between your browser and the target. Every web vulnerability you find will involve Burp at some point.

Web CPTS
LevelBeginner. Everything in web testing runs through it, so set it up first.
Know firstHow a browser sends an HTTP request and gets a response, and what a cookie and a parameter are.
You will learn toroute your browser through Burp, read and change requests, and replay them in Repeater.

What is it?

Burp Suite is an intercepting proxy. It sits between your browser and the target web application. Every request your browser sends goes through Burp first, you can see it, modify it, replay it, or automate attacks against it.

The core components you'll use constantly:

  • Proxy: intercepts browser traffic so you can inspect and modify requests before they reach the server
  • Repeater: resend individual requests with modifications. This is where you manually test for SQLi, XSS, IDOR, and every other web vulnerability
  • Intruder: automated attacks using wordlists. Brute-force login forms, enumerate users, fuzz parameters
  • Decoder: encode/decode Base64, URL encoding, HTML entities, hex, etc.
  • Comparer: diff two responses to spot subtle differences (critical for blind injection testing)

Burp is your primary workspace for web testing. Where Gobuster finds the pages, ffuf fuzzes the parameters, and sqlmap automates the exploitation, Burp is where you understand the application's behavior and identify the vulnerability in the first place.

Set this up first

Nothing works until your browser sends its traffic through Burp. Do these three steps once.

  1. Start Burp and keep the Proxy listener on its default address, 127.0.0.1:8080.
  2. Point the browser at that listener, for example with a proxy switcher such as FoxyProxy.
  3. Install Burp's CA certificate in the browser, so HTTPS sites load without errors.

Then turn Intercept off while you browse, set the target scope so Proxy history stays clean, and send interesting requests to Repeater.

When do you use it?

Every time there's a web application. Any port running HTTP/HTTPS, port 80, 443, 8080, 8443, or any other web service, goes through Burp. Start Burp before you even open the browser.

  • Understanding the application: browse the site with Burp capturing traffic, then review the sitemap to understand the application's structure
  • Testing authentication: intercept login requests, test for SQLi, default credentials, rate limiting
  • Finding injection points: add ' to every parameter in Repeater, watch for errors
  • Testing authorization: capture a request as one user, change the session cookie to another user's, check if the action still works (IDOR)
  • File upload testing: modify Content-Type, filename, and file content to bypass upload restrictions
  • Saving requests for sqlmap: right-click → "Copy to file" → pass to sqlmap with -r

Proxy setup

Burp listens on 127.0.0.1:8080 by default. You need to configure your browser to send traffic through it.

Browser configuration

setup: Firefox (recommended for Burp)
# Option 1: FoxyProxy extension (recommended)
1. Install FoxyProxy Standard from Firefox Add-ons
2. Click FoxyProxy icon → Options
3. Add new proxy:
   - Title: Burp
   - Type: HTTP
   - IP: 127.0.0.1
   - Port: 8080
4. Click FoxyProxy icon → select "Burp" to route traffic through Burp
5. Click "Turn Off" to stop proxying

# Option 2: Manual browser settings
Firefox → Settings → Network Settings → Manual proxy config
HTTP Proxy: 127.0.0.1   Port: 8080
Check "Also use this proxy for HTTPS"

CA certificate installation

Without Burp's CA certificate, HTTPS sites show certificate errors because Burp is performing a man-in-the-middle on your own traffic.

setup: install Burp CA certificate
1. With proxy active, browse to: http://burp
2. Click "CA Certificate" to download
3. Firefox → Settings → Privacy & Security → Certificates → View Certificates
4. Import → select the downloaded cacert.der
5. Check "Trust this CA to identify websites" → OK

# Now HTTPS sites work through Burp without certificate warnings
Use a separate browser profile

Create a Firefox profile just for Burp: firefox -P, create "Burp" profile. This keeps your normal browsing separate from your testing traffic. No accidental personal traffic in the proxy history.

Intercepting and modifying requests

The Proxy tab's "Intercept" feature pauses every request so you can modify it before it reaches the server.

workflow: intercepting a login
# 1. Turn on Intercept: Proxy → Intercept → "Intercept is on"
# 2. Submit the login form in browser
# 3. Burp catches the request:

POST /login HTTP/1.1
Host: 10.10.10.10
Content-Type: application/x-www-form-urlencoded

username=admin&password=test123

# 4. Modify the request before forwarding:
#    - Change password to: admin' OR 1=1--
#    - Click "Forward" to send the modified request
# 5. Check if you're logged in → SQL injection works!

# Pro tip: Right-click → "Send to Repeater" for more controlled testing
Don't leave Intercept on

Intercept pauses every request. If you're just browsing the application to understand it, turn Intercept off (the button says "Intercept is off"). Burp still captures all traffic in the HTTP History, you can review everything later without interrupting your browsing.

Repeater workflow

Repeater is where you spend 80% of your Burp time. It lets you modify a request, send it, see the response, and repeat, all in one pane.

workflow: manual SQLi testing in Repeater
# 1. From Proxy History, find the interesting request
# 2. Right-click → "Send to Repeater" (Ctrl+R)
# 3. In Repeater, modify the parameter and click "Send":

# Test 1: Normal request (baseline)
GET /search?id=1 HTTP/1.1
#   → Response: 200 OK, shows product

# Test 2: Single quote
GET /search?id=1' HTTP/1.1
#   → Response: 500 Error, SQL syntax error → INJECTABLE!

# Test 3: Boolean true
GET /search?id=1 AND 1=1-- HTTP/1.1
#   → Response: same as Test 1

# Test 4: Boolean false
GET /search?id=1 AND 1=2-- HTTP/1.1
#   → Response: different (empty/error) → CONFIRMED boolean blind SQLi

# 4. Right-click → "Copy to file" → save as request.txt
# 5. Run: sqlmap -r request.txt -p id --batch --dbs
Things to test in Repeater
  • SQL injection: ', ", 1 OR 1=1, SLEEP(5)
  • XSS: <script>alert(1)</script>, check if it reflects in the response
  • IDOR: Change ID numbers: id=1 → id=2: do you see other users' data?
  • Path traversal: file=../../../etc/passwd
  • Command injection: ; id, | whoami, `id`
  • SSRF: Change URL parameters to point at http://127.0.0.1/admin

Intruder attack types

Intruder automates attacks with wordlists. Right-click a request → "Send to Intruder", then highlight the attack positions (where payloads get inserted).

Attack typeHow it worksUse case
SniperTests one position at a time with each payloadFuzzing a single parameter with a wordlist. Most common
Battering RamSame payload in all positions simultaneouslySame value needed in multiple fields (rare)
PitchforkOne payload from each list in parallel (list 1 item 1 + list 2 item 1, etc.)Username:password pairs from two lists (credential stuffing)
Cluster BombAll combinations of all payloads across positionsBrute-force: every username with every password

Example: brute-forcing a login

workflow: Intruder login brute-force
# 1. Send login request to Intruder
# 2. Highlight the positions to attack:
POST /login HTTP/1.1
Host: 10.10.10.10

username=§admin§&password=§password§

# 3. Choose attack type:
#    - Sniper: test passwords for one known username
#    - Cluster Bomb: try all usernames with all passwords

# 4. Payloads tab:
#    Position 1 (username): admin, administrator, root, user
#    Position 2 (password): load from /usr/share/seclists/Passwords/...

# 5. Click "Start Attack"
# 6. Sort results by Status code or Length, successful login has different response
Community Edition speed limit

Burp Suite Community Edition throttles Intruder to about 1 request/second. For serious brute-forcing, use ffuf or Hydra instead. Reserve Burp Intruder for small-scale attacks (under 100 combinations) or use Pro if available.

Decoder

Quick encoding/decoding of values you encounter during testing. Essential for understanding cookies, tokens, and encoded parameters.

examples: common decoding tasks
# Base64 cookie:
eyJ1c2VyIjoiYWRtaW4iLCJyb2xlIjoiYWRtaW4ifQ==
# Decode as Base64 → {"user":"admin","role":"admin"}
# Change to {"user":"admin","role":"superadmin"}, re-encode, send in Repeater

# URL-encoded parameter:
search=%27%20OR%201%3D1--
# Decode URL → ' OR 1=1--

# JWT token (Base64url):
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VyIjoiYWRtaW4ifQ.
# Decode each part separated by dots to inspect claims and algorithm

Community vs Pro

FeatureCommunity (free)Professional ($449/yr)
Proxy + HistoryFullFull
RepeaterFullFull
Intruder speedThrottled (~1 req/s)Full speed
ScannerNot availableAutomated vulnerability scanner
Saving projectsNot availableSave/load project files
ExtensionsBasicFull BApp Store
CollaboratorNot availableOut-of-band vulnerability detection
Good enough for CPTS?YesBetter, but not required
Community is enough for CPTS

You can pass CPTS with Burp Community. Use Repeater for manual testing (full functionality), and for brute-forcing where Community's Intruder is too slow, switch to ffuf or Hydra. The scanner is nice-to-have but not necessary, manual testing is what CPTS tests.

Tips and shortcuts

Efficiency shortcuts
  • Ctrl+R: send selected request to Repeater (most used shortcut)
  • Ctrl+I: send to Intruder
  • Ctrl+Shift+R: send Repeater response to Comparer
  • Use scope filtering: Target → Scope → add target domain. Then in Proxy settings, check "Only show in-scope items" to filter out noise
  • Color-code requests: right-click in history → Highlight → pick a color to mark interesting requests
  • Search across history: Proxy → HTTP History → filter bar at top. Search for "password", "token", "admin" in both requests and responses
  • Match and Replace: Proxy → Options → Match and Replace. Auto-modify all requests (e.g., always add a custom header)

Common mistakes

Things that go wrong
  • Forgetting to install the CA cert: HTTPS sites won't work without it. Every time you reset your VM, re-install the cert
  • Leaving Intercept on while browsing: Your browser freezes because Burp is holding every request. Turn Intercept off when just browsing
  • Not setting scope: Your Proxy History fills with traffic to CDNs, analytics, and other noise. Set the target scope first
  • Testing in the wrong browser tab: Make sure the tab hitting the target is the one going through Burp. Check FoxyProxy is active
  • Not using Repeater enough: Beginners try to test everything in the browser. Repeater gives you surgical control, use it for every injection test
  • Relying on Intruder in Community: At 1 req/s, a 10,000-word brute-force takes nearly 3 hours. Use ffuf or Hydra for anything over ~100 combinations
  • Ignoring response headers: Headers reveal technology (X-Powered-By), security controls (CSP, X-Frame-Options), and sometimes debug info. Read them

Check yourself

Answer each question out loud or on paper first, then open it. Retrieving the answer teaches you more than rereading the page.

Your browser freezes while Burp is open. Why?
Intercept is on, so Burp holds every request until you forward it. Turn Intercept off when you are only browsing.
HTTPS sites will not load through Burp. What is missing?
Burp's CA certificate is not installed in the browser. It has to be installed again after you reset a VM.
Why set the target scope first?
Without it the Proxy history fills with traffic to CDNs, analytics and other noise.
Why test injections in Repeater and not in the browser?
Repeater gives you control: change one thing, resend, and compare the responses. Testing everything in the browser is slower and less precise.
Why not rely on Intruder in Community Edition for a 10,000-word attack?
Community throttles Intruder to about 1 request per second, so that attack takes nearly 3 hours. Use ffuf or Hydra for anything over about 100 combinations.