> 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/zh/web/business-logic/overconfidence-on-the-client-side.md).

# 对客户端侧过度自信

对客户端侧过度自信，PortSwigger Web Security Academy 实验笔记，包括利用流程、载荷测试、Burp Suite 验证以及修复上下文。

### 对客户端控制的过度信任

**实验描述**

此应用程序未能正确验证客户端发送的数据。/ 可以利用购买流程中的逻辑缺陷来更改产品价格。/ 目标是购买 \*\*

提供的标识符：

* **用户**: wiener
* **密码**: peter

**行为分析**

网站上提供了一个购物车

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

将产品加入购物车时，会 **POST** 发送一个包含多个参数的请求，其中包括价格。

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

标准添加到购物车时观察到的请求示例：

```bash
productId=1&redir=PRODUCT&quantity=1&price=133700
```

该 **价格** 参数完全由客户端控制，且未在服务器端得到正确检查。

**利用**

通过手动更改 **价格** 请求中的参数，例如：

```bash
productId=1&redir=PRODUCT&quantity=1&price=0
```

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

服务器在未进行严格验证的情况下接受了该请求。

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

**结果**

商品被添加到购物车，且尽管客户端侧处理了价格，购买仍可被确认。/ 这表明对浏览器端控制过度依赖，从而使预期的业务逻辑可以被绕过。

<figure><img src="https://1574813340-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-952cf8501c39e41194c8499712caa327675f17d1%2Fimage%20(215).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/zh/web/business-logic/overconfidence-on-the-client-side.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.
