> 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/ja/web/business-logic/failed-state-machine-workaround.md).

# 失敗したステートマシンの回避策

失敗したステートマシンの回避策の PortSwigger Web Security Academy ラボ向けノート。攻撃フロー、ペイロードテスト、Burp Suite による検証、および是正策の文脈を含みます。

### 欠陥のあるステートマシンによる認証バイパス

このラボは、認証プロセスにおけるステップの順序に関する誤った仮定に基づいています。設計の悪いこのステートマシンを使用すると、認証をバイパスし、管理者インターフェースにアクセスしてユーザーを削除することが可能です **carlos**.

提供された識別子:

* **ユーザー:** wiener
* **パスワード:** peter

**主な観察**

接続フローはいくつかの連続するステップに分かれており、その中には中間のロール選択ステップも含まれます。

アプリケーションは、すべてのステップが順番どおりに実行され、各リクエストが次のステップに進む前に適切に検証されていると想定しています。

**実行手順**

1. 有効な `wiener:peter` 認証情報。
2. ログイン後、アプリケーションは～のステップを提示します **ロール選択**.

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-2d7422ef8447c6ebbf8d21ad7f08aa9ee0a90df1%2F%7B63EBA66C-DEAF-415F-9D3E-EC96C18DCCD6%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

* ［次へ］をクリックして進みます。
* GETリクエストで～にアクセスした時点で **ロール選択画面**、リクエストを傍受します。

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-743746c175c66d95624c00ea6b0ed5c1f30dec72%2F%7B62FB8FD5-0978-4914-9A9F-C3F596FC720E%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

**リクエストを通さないでください**：ブロックするか削除します（drop）。

* ロールの検証はこの段階で行われます。

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-babfdb7303a1ebc41a29df0a8e0da7f9900a0e71%2F%7B8DC352D5-6BD1-4A86-921D-ABCC671D43AE%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

この検証を行わずにフローを続行します。

**結果**

アプリケーションは、すべてのステップが適切に検証されたと誤って判断します。 / ユーザーは、正当なロールを選択または検証することなく、\*\*管理パネル\*\*に直接アクセスします。

そこからユーザーを削除できます **carlos** そしてラボを完了できます。

<figure><img src="https://2001299964-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e4d13c78eea07f6bdebd27f03d7c3c34e66b1a22%2F%7B4348027A-A520-4C3D-BBC6-0F1FA5ECC8F1%7D.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/ja/web/business-logic/failed-state-machine-workaround.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.
