> 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/de/web/business-logic/logical-flaw-allowing-you-to-generate-infinite-money.md).

# Logischer Fehler, der es Ihnen ermöglicht, unbegrenzt Geld zu erzeugen

### Logikfehler mit unendlichem Geld

**Beschreibung des Labs**

Dieses Lab enthält einen Logikfehler im Kaufprozess. Durch die fehlerhafte Interaktion zwischen \*\* Geschenkkarten\*\*, \*\* Aktionsgutscheinen\*\* und **Bestellbestätigung**, ist es möglich, unbegrenzt Guthaben zu erzeugen und dann die Lightweight l33t Lederjacke zu kaufen.

Bereitgestellter Bezeichner:

* **Benutzer**: wiener
* **Passwort**: peter

<figure><img src="/files/2ccd40196b7fbf37a2d98e09c372485995c031a0" alt=""><figcaption></figcaption></figure>

### Fehlerprinzip

Nach der Anmeldung zum Newsletter wird ein Aktionsgutschein vergeben:

* **Gutschein** : `SIGNUP30`

<figure><img src="/files/31c4aa1a35b6a8cd6e75dcef7143e8cac5524151" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7081c79ddbb531117aad09aa3ab37bbe2240ed15" alt=""><figcaption></figcaption></figure>

Im Shop ist es möglich, \*\* Geschenkkarten\*\* zu kaufen.

Das Problem ist, dass der Gutschein beim Kauf dieser Karten angewendet werden kann.

<figure><img src="/files/3c7c44ee7aa2391492d7839f4665ecaebbeb7f0e" alt=""><figcaption></figcaption></figure>

#### Erstes Ausnutzungsbeispiel

* Kauf einer Geschenkkarte über **$10**
* Anwendung des Gutscheins `SIGNUP30`
* Endgültig gezahlter Preis: **$7**

<figure><img src="/files/66eadf51289173b70206599ff9783bd8030baf49" alt=""><figcaption></figcaption></figure>

* Erhalt eines **Geschenkkartencodes** (Beispiel: `DbWseYFi2v`)

<figure><img src="/files/e39b7dd61a8e74210de3d5af1522396320aabc21" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/d6450e172b48df090208a679a40e370cdaab8cb7" alt="" width="563"><figcaption></figcaption></figure>

Wenn dieser Code im Bereich Geschenkkarten verwendet wird, erhöht sich das Kontoguthaben um **10$** während nur **7$** ausgegeben wurde.

Der Nettogewinn beträgt also **$3**, wodurch sich das Gesamtguthaben auf erhöht **$103**.

<figure><img src="/files/7b125d9afcb3717c918747c1c92cdf3617b40086" alt=""><figcaption></figcaption></figure>

### Identifizierte Logikfehler

1. Der Gutschein kann verwendet werden **mehrmals** um Geschenkkarten zu kaufen.
2. Das Guthaben für Geschenkkarten wird **weiterhin in vollem Umfang angerechnet**, unabhängig vom tatsächlich gezahlten Preis.
3. Bestellbestätigung über den Endpunkt:

   ```bash
   /cart/order-confirmation?order-confirmed=true
   ```

ermöglicht die dynamische Ermittlung des Geschenkkartencodes.

Keine Einschränkung verhindert die Automatisierung dieses Prozesses.

<figure><img src="/files/39a3b060d1193ceefe5ac0b19373330d0eada03d" alt=""><figcaption></figcaption></figure>

### Angriffsautomatisierung (Makro)

Um den Fehler im großen Stil auszunutzen, wird ein **Burp-Suite-Makro** implementiert.

<figure><img src="/files/721d4579df6ba9dec56f65b6142739fc2d60c71c" alt=""><figcaption></figcaption></figure>

#### Vom Makro abgefangene Anfragen

1. Ein Produkt hinzufügen **Geschenkkarte** in den Warenkorb
2. Anwendung des Newsletter-Gutscheins (`SIGNUP30`)
3. Bestellvalidierung (`Bestellung aufgeben`)
4. Abruf der Bestellbestätigungsantwort
5. Registrierung der Geschenkkarte auf dem Benutzerkonto

<figure><img src="/files/4ce4f4d08433b23586ee237ad2c81b23cf9d5a0b" alt=""><figcaption></figcaption></figure>

#### Wichtige Makro-Punkte

* Das **Geschenkkartencodes** wird dynamisch aus dem `Warenkorb-/Bestellbestätigungs` Antwort extrahiert.

<figure><img src="/files/44f410fd47126a189efaf2df53bb39b8cf946971" alt=""><figcaption></figcaption></figure>

* Dieser Code wird dann per POST-Anfrage an den Geschenkkarten-Verwaltungsendpunkt erneut eingeschleust.
* Ein benutzerdefiniertes **Parameters** wird in der GET-Abfrage gesetzt, um den Codewert zu speichern.

<figure><img src="/files/16fccb6f2789eb64d914205ee356c5842eed0b2a" alt=""><figcaption></figcaption></figure>

Der angewendete Gutschein übernimmt seinen Wert aus einer vorherigen Abfrage und ermöglicht so die automatische Wiederverwendung.

<figure><img src="/files/c9cbc6f3fad323e29c87e3c6cf24cccdc7032a1b" alt=""><figcaption></figcaption></figure>

### Massenausführung

Sobald das Makro konfiguriert ist:

Alle Anfragen an den **URL-Bereich** lösen automatisch das Makro aus.

* Eine **Intruder** Abfrage wird an die Website-Root gesendet.
* Konfiguration:
* **500 Anfragen**
* **Nutzlast null**

<figure><img src="/files/f96987e8f36d9a13863bdd5459d63ab66c1bf783" alt=""><figcaption></figcaption></figure>

**Ressourcenpool** begrenzt auf **1 gleichzeitige Anfrage**

<figure><img src="/files/b65f74f8feff5084e8418b468ed5b0b299ec5a68" alt="" width="364"><figcaption></figcaption></figure>

Dieser Ansatz ermöglicht es, Käufe, Bestätigungen und Guthaben von Geschenkkarten ohne Unterbrechung aneinanderzureihen.

#### Ergebnis

Das Kontoguthaben steigt unbegrenzt. / Sobald ausreichend Guthaben angesammelt ist, wird der Kauf der **Lightweight l33t Lederjacke** ohne finanzielle Einschränkung möglich.

<figure><img src="/files/d82bc79b60d0b79fca4e74b69b9446c1350dc2d3" alt="" width="375"><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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/de/web/business-logic/logical-flaw-allowing-you-to-generate-infinite-money.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
