> 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/low-level-logic-flaw.md).

# Fehler auf niedriger Logikebene

### Fehlerhafte Durchsetzung von Geschäftsregeln

**Beschreibung des Labs**

Dieses Lab enthält einen \*\*logischen Fehler im Kaufprozess\*\*. Aufgrund der mangelhaften Anwendung von Geschäftsregeln ist es möglich, die Berechnung des Warenkorbs zu manipulieren, um eine "Lightweight l33t leather jacket" zu einem unerwarteten Preis zu kaufen.

Bereitgestellter Bezeichner:

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

**Verhaltensanalyse**

Wenn ein Produkt zum Warenkorb hinzugefügt wird, wird die folgende Anfrage verwendet:

```bash
productId=1&redir=PRODUCT&quantity=99
```

Dieser Parameter kann gesendet werden **sehr oft** ohne strikte Kontrolle des kumulierten Werts.

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

Die Anfrage wird an **Intruder** mit einer Null-Nutzlast konfiguriert in **Unbegrenzt fortsetzen** Modus und einem Maximum von **1 gleichzeitige Anfrage**.

<figure><img src="/files/235d417145e945a343ae8a0241c7d06ac1ca4374" alt=""><figcaption></figcaption></figure>

Nach genügend Iterationen wird der **Gesamtpreis des Warenkorbs negativ**.

<figure><img src="/files/5ffa1fef280d04508c6f94dbf6d9ef14d6759728" alt=""><figcaption></figcaption></figure>

**Ursache des Problems**

Die Schwachstelle rührt von einem vorzeichenbehafteten **Überlauf**. / Die Anwendung verwendet ein **vorzeichenbehaftetes 32-Bit-Integer**, dessen Grenzen sind:

* Minimalwert: `-2 147 483 648`
* Maximalwert: `2 147 483 647`

Wenn der Gesamtwert den maximal zulässigen Wert überschreitet, wird er **in negative Werte neu berechnet** aufgrund eines arithmetischen Überlaufs.

**Unzureichende Kontrollen**

Auch wenn die Anwendung die Zahlung verhindert, wenn der Gesamtwert kleiner als 0 ist, **erfolgt bei den Zwischensummen keine korrekte Überprüfung**.

Dadurch können Sie den Warenkorb anpassen, bis Sie einen positiven, aber sehr niedrigen Endbetrag erhalten.

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

**Anpassung der Endberechnung**

Um einen Betrag \*\* über 0 $ und unter 100 $\*\* zu erhalten, wird die folgende Berechnung durchgeführt:

* Kosten der Jacke: **$1,337**
* Erforderlicher Wert, um den Überlauf auszulösen: \**14 018 329* \*
* Berechnung:

  ```bash
  14 018 329 / 1337 ≈ 10 484 Mal
  ```

Stapelübermittlung (`Menge = 99`):

```bash
10.484 / 99 ≈ 105 Anfragen
```

**Endgültige Warenkorbzusammensetzung**

Um nach dem Überlauf einen gültigen Gesamtbetrag zu erhalten:

* **32 123** Jacken zu 1337 $
* **21** Babysitter-Schuhe zu 60,79 $
* **Endsumme:** **$54.63**


---

# 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/low-level-logic-flaw.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.
