Post Page Advertisement [Top]



Click here to send WhatsApp On Unsaved Mobile Numbers For Free

 

Ethical Hacking Burp Suite Deep Dive: Requests, Responses, Parameters & Repeater | Day 13
Ethical Hacking 

🛡️ Ethical Hacking — Day 13

Burp Suite Deep Dive: Requests, Responses, Parameters & Repeater

⚠️ LEARNING PURPOSE ONLY: This tutorial is strictly for educational and defensive cybersecurity learning. Perform practical exercises only against applications you own, deliberately vulnerable training applications, or systems for which you have explicit permission to test. Never test random public websites, accounts, APIs, or infrastructure.

Welcome to Day 13.

Yesterday you learned the basic Burp Suite workflow:

Browser
   ↓
Burp Proxy
   ↓
Training Application

Today we're going deeper into HTTP request/response analysis.

The goal is not to blindly modify requests. The goal is to understand:

What data does the application receive, how does it process that data, and what does it return?


🎯 Today's Learning Objectives

By the end of Day 13, you'll understand:

  • HTTP request anatomy

  • HTTP response anatomy

  • Query parameters

  • Form parameters

  • JSON parameters

  • HTTP headers

  • Cookies

  • URL encoding

  • Repeater

  • Comparing responses

  • Request modification

  • Basic input validation

  • API requests

  • Browser → Burp → Application workflow

  • Practical exercises on Linux, Windows and macOS


1. HTTP Request Anatomy

Consider:

GET /products?id=25 HTTP/1.1
Host: 127.0.0.1:3000
User-Agent: Mozilla/5.0
Accept: text/html

Break it down:

GET
 ↓
HTTP Method

/products?id=25
 ↓
Path + Query Parameter

HTTP/1.1
 ↓
HTTP Version

Host
 ↓
Target host

User-Agent
 ↓
Client information

Accept
 ↓
Accepted response type

2. The Four Main Parts of a Request

A request can be thought of as:

┌──────────────────────────────┐
│ Request Line                 │
├──────────────────────────────┤
│ Headers                      │
├──────────────────────────────┤
│ Blank Line                   │
├──────────────────────────────┤
│ Optional Body                │
└──────────────────────────────┘

For example:

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

username=student&password=example

3. Request Line

The first line contains:

METHOD PATH VERSION

Example:

GET /products HTTP/1.1

So:

Method  = GET
Path    = /products
Version = HTTP/1.1

4. Query Parameters

Example:

/products?id=25

Here:

id=25

is a query parameter.

Multiple parameters can appear:

/products?id=25&category=books

Conceptually:

/products
    │
    ├── id=25
    │
    └── category=books

🧪 Practical Lab 1 — Query Parameters

Use your local training application.

Suppose it has:

http://127.0.0.1:3000/products?id=1

Open it through your dedicated lab browser.

In Burp:

Proxy
 ↓
HTTP history

Find the request.

Send it to:

Repeater

Change only:

id=1

to:

id=2

Click:

Send

Record:

RequestStatusLengthResult
id=1_________
id=2_________

This is controlled parameter analysis.


5. Multiple Parameters

Suppose:

/products?id=25&sort=price

There are two parameters:

id = 25
sort = price

Change only one:

/products?id=26&sort=price

Then compare the response.

This teaches an important testing principle:

Change one variable at a time.


6. Why Change One Variable?

Suppose you change:

id
sort
category
page

all at once.

If the response changes, you don't know which input caused it.

Instead:

Original
   ↓
Change ID
   ↓
Observe
   ↓
Restore
   ↓
Change sort
   ↓
Observe

This produces much better evidence.


7. POST Parameters

POST requests commonly contain data in the body.

Example:

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

username=student&password=example

The body contains:

username=student
password=example

8. JSON Parameters

Modern APIs frequently use JSON.

Example:

POST /api/products HTTP/1.1
Host: 127.0.0.1:3000
Content-Type: application/json

{
  "name": "Laptop",
  "price": 50000
}

Parameters:

name
price

9. Form vs JSON

Form

username=student&password=example

JSON

{
  "username": "student",
  "password": "example"
}

Both can carry application input.

The server determines how that input is processed.


🧪 Practical Lab 2 — JSON

If your local training application provides an API endpoint that accepts JSON, send a legitimate request through Burp Repeater.

For example:

POST /api/test HTTP/1.1
Host: 127.0.0.1:3000
Content-Type: application/json

{
  "name": "Day13",
  "value": "learning"
}

Send it only if that endpoint exists in your local lab.

Observe:

Status
Response headers
Response body

Do not invent requests against public APIs.


10. HTTP Response Anatomy

A response might look like:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 52

{
  "status": "success"
}

The response contains:

Status line
Headers
Blank line
Body

11. Status Line

Example:

HTTP/1.1 200 OK

Breakdown:

HTTP/1.1
 ↓
Version

200
 ↓
Status Code

OK
 ↓
Reason phrase

12. Response Headers

Examples:

Content-Type: application/json
Content-Length: 52
Cache-Control: no-cache
Set-Cookie: ...

These provide information about the response.


13. Response Body

The body might contain:

HTML

<html>
<body>
<h1>Hello</h1>
</body>
</html>

JSON

{
  "id": 10,
  "name": "Student"
}

Plain text

Operation successful

14. Compare Request vs Response

Always think:

REQUEST
What did I send?

        ↓

SERVER

        ↓

RESPONSE
What did I receive?

This is the foundation of Burp-based testing.


15. URL Encoding

Some characters have special meanings in URLs.

For example:

space

may be encoded as:

%20

And:

&

has a special meaning for separating parameters.

Example:

/search?q=hello%20world

means approximately:

q = hello world

16. Why Encoding Matters

Suppose an application receives:

/search?q=hello%20world

The server may decode it before processing.

Conceptually:

Encoded Input
      ↓
URL Decoder
      ↓
Application

Security testing often requires understanding exactly when and how input is decoded.


17. Common Encoded Characters

CharacterEncoding
Space%20
?%3F
&%26
=%3D
/%2F
#%23

You don't need to memorize all of them.

Burp can help you inspect and manipulate encoded values.


18. Cookies

A request may contain:

Cookie: session=example-session

The cookie can identify a browser session.

Burp lets you see cookies in requests.

But remember:

A real session cookie should be treated like a credential.

For your lab, use only lab-generated cookies.


19. Cookie Attributes

A server might send:

Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Lax

Here:

Secure
HttpOnly
SameSite

are security-related attributes.


20. Authentication

An authenticated request may contain:

Cookie: session=LAB_SESSION

or:

Authorization: Bearer LAB_TOKEN

For learning, use dummy or training credentials/tokens.

Never copy production tokens into your notes.


21. Authorization

Suppose a lab application has:

GET /profile/10

The security question is not simply:

"Does this URL work?"

Instead:

"Should the currently authenticated user be allowed to access profile 10?"

This is an authorization question.

We'll study authorization testing in much greater depth later.


22. Repeater Workflow

Remember this workflow:

HTTP History
     ↓
Select Request
     ↓
Send to Repeater
     ↓
Inspect
     ↓
Change ONE value
     ↓
Send
     ↓
Observe
     ↓
Compare
     ↓
Document

23. Repeater Example

Original:

GET /products?id=1 HTTP/1.1
Host: 127.0.0.1:3000

Modified:

GET /products?id=2 HTTP/1.1
Host: 127.0.0.1:3000

Observe:

Status:
Length:
Response:

Then return to:

id=1

This gives you a baseline.


24. Baseline

A baseline is the normal behavior you compare other results against.

For example:

Baseline:

id=1
200 OK
Product 1 returned

Then:

Test:

id=2
200 OK
Product 2 returned

Now you understand normal parameter behavior.


25. Invalid Input

You can safely test ordinary invalid input in your own lab.

For example:

id=abc

instead of:

id=1

Observe whether the application returns:

400 Bad Request

or:

404 Not Found

or another response.

This is basic input validation testing.


26. Boundary Testing

Another useful technique is testing reasonable boundary values.

For example, if your local application expects:

page=1

try:

page=0

or:

page=100

only within your lab.

You're asking:

How does the application behave at the edges of its expected input?


27. Don't Confuse Errors With Vulnerabilities

Suppose:

id=abc

produces:

500 Internal Server Error

That is worth investigating in your authorized lab.

But:

An error does not automatically mean you've found a vulnerability.

You need to understand:

  • Why it happened

  • Whether sensitive information was exposed

  • Whether it affects security

  • Whether it is reproducible

  • How it should be fixed


28. Information Disclosure

Suppose an error response contains:

Database connection failed
Internal server path: /var/www/app/...
Framework version: ...

That may reveal unnecessary internal information.

This is an example of potentially useful security evidence.

Again:

Don't deliberately trigger errors on systems you aren't authorized to test.


29. Comparing Responses

When testing a parameter, compare:

Status

200
400
403
404
500

Length

1234 bytes
1450 bytes

Headers

Content-Type
Set-Cookie
Location

Body

Different content?
Error?
Normal response?

30. A Simple Comparison Table

TestStatusLengthResponse Difference
Baseline2001200Normal
id=22001210Different product
id=abc400350Validation error
id=999999404280Not found

This is much more useful than simply saying:

"It worked."


31. HTTP Headers Exercise

In your local lab, take a request and inspect:

Host:
User-Agent:
Accept:
Content-Type:
Cookie:

For the response:

Content-Type:
Cache-Control:
Set-Cookie:
Location:

Record what each field does.


32. Custom Header Experiment

In Repeater, add a harmless test header:

X-Lab-Day: 13

For example:

GET / HTTP/1.1
Host: 127.0.0.1:3000
X-Lab-Day: 13

Send it.

Then observe the response.

The application may ignore it.

That's perfectly fine.

The purpose is learning how HTTP headers travel.


33. API Request Analysis

If your local lab has an API, find a request such as:

GET /api/products

or:

POST /api/products

Inspect:

Method
Endpoint
Headers
Content-Type
Body
Response

Create:

API Endpoint:
________________

Method:
________________

Request format:
________________

Response format:
________________

34. Browser Developer Tools + Burp

Use both tools together.

Browser
   │
   ├── Developer Tools
   │       ↓
   │   Observe browser behavior
   │
   ▼
Burp
   │
   ├── Proxy
   ├── HTTP History
   └── Repeater
   │
   ▼
Application

Developer Tools show what the browser is doing.

Burp gives you a more controlled security-testing workflow.


🐧 35. Linux Practical Session

Check curl:

curl --version

Test your local application:

curl http://127.0.0.1:3000/

Send headers:

curl -H "X-Lab-Day: 13" http://127.0.0.1:3000/

Send a query:

curl "http://127.0.0.1:3000/products?id=1"

Use verbose mode:

curl -v "http://127.0.0.1:3000/products?id=1"

Use these only with your local training application.


🪟 36. Windows Practical Session

Check:

curl.exe --version

Test:

curl.exe http://127.0.0.1:3000/

Query parameter:

curl.exe "http://127.0.0.1:3000/products?id=1"

Custom header:

curl.exe -H "X-Lab-Day: 13" http://127.0.0.1:3000/

Verbose:

curl.exe -v "http://127.0.0.1:3000/products?id=1"

🍎 37. macOS Practical Session

Check:

curl --version

Request:

curl http://127.0.0.1:3000/

Query:

curl "http://127.0.0.1:3000/products?id=1"

Custom header:

curl -H "X-Lab-Day: 13" http://127.0.0.1:3000/

Verbose:

curl -v "http://127.0.0.1:3000/products?id=1"

38. Using curl Through Burp

If Burp is listening on:

127.0.0.1:8080

and your training application is:

127.0.0.1:3000

Linux/macOS

curl -x http://127.0.0.1:8080 http://127.0.0.1:3000/

Windows

curl.exe -x http://127.0.0.1:8080 http://127.0.0.1:3000/

The flow becomes:

curl
 ↓
Burp :8080
 ↓
Lab App :3000

This is a useful alternative to configuring a browser.


🧪 Day 13 Main Practical Lab

Objective

Analyze and modify a request without exploiting anything.

Step 1

Start your deliberately vulnerable/local training application.

Example:

http://127.0.0.1:3000

Step 2

Start Burp.

Verify:

127.0.0.1:8080

or whatever listener your Burp installation actually uses.


Step 3

Send traffic through Burp.

Use your dedicated browser or:

curl -x http://127.0.0.1:8080 http://127.0.0.1:3000/

Step 4

Open:

Proxy → HTTP history

Step 5

Select a request.

Identify:

Method:
Path:
Query:
Headers:
Cookies:
Body:

Step 6

Send to:

Repeater

Step 7

Create a baseline.

Send the original request.

Record:

Status:
Length:
Content-Type:

Step 8

Modify one harmless parameter.

For example:

id=1

to:

id=2

Step 9

Send again.

Record:

Status:
Length:
Difference:

Step 10

Try a normal invalid value:

id=abc

Only if that parameter is appropriate for your local lab.

Record the result.


📊 Day 13 Lab Report

Fill this in:

Target:
127.0.0.1:_____

Request:
____________________

Method:
____________________

Endpoint:
____________________

Parameter:
____________________

Baseline Status:
____________________

Baseline Length:
____________________

Modified Input:
____________________

Modified Status:
____________________

Modified Length:
____________________

Observed Difference:
____________________

🧠 Day 13 Security Mindset

When you see:

GET /user?id=10

ask:

What is id?
      ↓
What does the server do with it?
      ↓
What type of value is expected?
      ↓
What happens with another valid value?
      ↓
What happens with invalid input?
      ↓
Does authorization affect the result?
      ↓
Is sensitive information exposed?

This is the foundation of structured web application testing.


📝 Day 13 Assignment

Answer these:

1.

What are the main parts of an HTTP request?

2.

What are the main parts of an HTTP response?

3.

What is a query parameter?

4.

What is a POST body?

5.

What is JSON?

6.

What is URL encoding?

7.

Why is a session cookie sensitive?

8.

What is a baseline response?

9.

Why should you change only one parameter at a time?

10.

Does a 500 response automatically prove a vulnerability? Why or why not?

11.

What is the purpose of Burp Repeater?

12.

What is the difference between authentication and authorization?

13.

Why should security testing use an authorized lab?

14.

What information should never be included in a public Burp screenshot?

15.

Why is response comparison useful?


🏆 Day 13 Challenge

Complete this workflow:

        LOCAL LAB
            │
            ▼
       Browser/curl
            │
            ▼
        Burp Proxy
            │
            ▼
       HTTP History
            │
            ▼
          Request
            │
            ▼
         Repeater
            │
      ┌─────┴─────┐
      ▼           ▼
 Original      Modified
 Request        Request
      │           │
      ▼           ▼
 Original      Modified
 Response       Response
      │           │
      └─────┬─────┘
            ▼
        Comparison
            │
            ▼
       Documentation

Then write a short conclusion:

"I tested the parameter ______ in my authorized local lab. The baseline response was ______. After changing the parameter to ______, the application returned ______. This taught me ______."


⚠️ Ethical Hacking Reminder

LEARNING PURPOSE ONLY: Burp Suite can expose passwords, session cookies, authorization tokens, API keys, personal information, and private application data. Use it only with your own systems, deliberately vulnerable labs, or explicitly authorized targets.

Never use these techniques to test random websites.

Permission → Scope → Observe → Modify Carefully → Compare → Document → Secure


✅ Day 13 Summary

Today you learned:

  • HTTP request anatomy

  • HTTP response anatomy

  • Query parameters

  • POST parameters

  • JSON

  • Headers

  • Cookies

  • Sessions

  • URL encoding

  • Baselines

  • Invalid input

  • Boundary testing

  • Response comparison

  • Burp Repeater

  • API request analysis

  • Browser DevTools + Burp

  • curl on Linux

  • PowerShell/curl.exe on Windows

  • curl on macOS

  • Sending curl traffic through Burp

  • Structured web-security testing

🔑 Most Important Lesson

Good security testing starts with understanding normal behavior. Establish a baseline first, change one thing at a time, observe the result, and document what you can actually prove.


🔜 Day 14 — Burp Suite + OWASP Juice Shop Lab

Tomorrow we'll connect everything you've learned into a controlled local web-security lab using a deliberately vulnerable application.

We'll cover:

  • Setting up OWASP Juice Shop locally

  • Docker-based setup

  • Browser → Burp → Juice Shop

  • HTTP/HTTPS traffic

  • HTTP History

  • Repeater

  • Parameters

  • Authentication concepts

  • Safe reconnaissance of your local lab

  • First vulnerability-analysis exercise

  • Linux, Windows & macOS commands

  • How to keep the entire lab isolated from real websites

🔐 LEARN → BUILD A LAB → INTERCEPT → ANALYZE → TEST → UNDERSTAND → SECURE.

No comments:

Post a Comment

Bottom Ad [Post Page]

rrkksinha.