置換したリクエストとは別のレスポンスを検査する場合(CSRFトークン)

# sWebMachineGun.exe実践編

置換したリクエストとは別のレスポンスを検査する場合で、今度はCSRFトークンによる画面遷移制御が行われている場合

## 診断対象

こんな感じ
<table border="1">
<tr><th align="center">入力画面</th><th colspan="2" align="center">確認画面</th><th align="center">完了画面</th></tr>
<tr><td><a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/13be5d9d-195e-22cb-6b72-53c4a771677e.png"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/13be5d9d-195e-22cb-6b72-53c4a771677e.png" width="70%" height="70%"></a></td><td colspan="2"><a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/77e45f91-25ed-2b3f-dfbf-dca98a1a3d62.png"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/77e45f91-25ed-2b3f-dfbf-dca98a1a3d62.png" width="70%" height="70%"></a></td><td><a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/cf20070d-9d04-b4b3-8ff7-218d7ef2c9cc.png"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/cf20070d-9d04-b4b3-8ff7-218d7ef2c9cc.png" width="70%" height="70%"></a></td></tr>
<tr><td colspan="2" valign="top">POST /sanaki/yourdata/testConfirm.asp HTTP/1.0<BR>
Content-Type: application/x-www-form-urlencoded<BR>
Content-Length: 0<BR>
<BR>
Email=test@example.com&Tel=03-0000-0000</td>
<td colspan="2" valign="top">POST /sanaki/yourdata/testComplete.asp HTTP/1.0<BR>
Content-Type: application/x-www-form-urlencoded<BR>
Content-Length: 0<BR>
<BR>
csrfToken=【直前のHTTPレスポンスに書かれていたCSRFトークン】</td>
</tr>
</table>

入力画面→確認画面→完了画面

そして、完了画面に遷移する際には、hiddenタグのCSRFトークンを正しく返す必要がある、、、というような対象

## sWebMachineGun.exeの設定

メインの設定は、HTTPリクエストの設定と、置換方法の設定

### sWebMachineGun.exeの設定1

「Request」タブに、二つのHTTPリクエストを設定して、
判定対象リクエストをNo1(2つ目のリクエスト)に設定する

一つ目はこんな感じ

![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/411e3a17-f935-062f-9d22-231e78d20907.png)

リクエストとしては「[一つのHTTPリクエスト(一番シンプル)](https://qiita.com/tomoki0sanaki/items/bf5425c33bab876b6287
)」と同じ。

二つ目はこんな感じ

![012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/dbbf50c2-6db3-1e60-6aa0-9470cf57d3ac.png)

- 変換対象ページが No0
- 判定対象ページが No1

となっている。
こういう設定にする方法は後述している

ちなみに「AutoTarget」がオフになっているが、オンにすると、変換対象/判定対象がGUIで表示されているページに自動で追随するので、オフにしている。

### sWebMachineGun.exeの設定2

「Setting」タブの置換方法は、キャプチャ画像を分かりやすくするために2つだけ。

- 「値」の前方に「'&quot;\'\&quot;`a--&gt;&lt;s&gt;【マーキング文字】【変数名】/&lt;/s&gt;」を追加する
- 「値」の前方に「'」を追加する

「お勧め」ボタンにはいろいろな置換方法が用意してありますよ。

「UseName」をチェックして、パラメータの解析(名前と値を解析)を実施するように指示する

![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/d9318026-d64a-4562-396e-ee0b5144f356.png)

この画面で、変換対象ページをNo0と指定している

### sWebMachineGun.exeの設定3

![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/a31b6687-1c5b-04dd-d079-07ff38fdb93f.png)

「Judge/Regex」で、判定対象ページをNo1に指定している

### sWebMachineGun.exeの設定4(CSRFトークンの設定)

「GeneralSetting」タブの「CSRF Token」ボタンで、表示されるダイアログで設定する。

![013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/888fe6a3-b958-924c-4490-a39dcac17221.png)

画面では、

- 抽出方法として、csrfTokenという名前のhiddenタグ(またはAタグのクエリ文字列)
- 貼付方法として、csrfTokenという名前のポストデータ(またはクエリ文字列)

ということになっている

## sWebMachineGun.exeの実行

「Execute」ボタンで、実行できるのですが、結果はこんな感じで、各変数に対して、各置換方法を与えたHTTPリクエストを送信し、そのレスポンスからCSRFトークンを探し出し、次のリクエストにそのトークンを埋め込んでいることが分かると思う。

![014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/57ca634f-f2e5-58c5-dd96-cfd0e64766d1.png)

![015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/04d61a77-a12b-7e1b-f060-a502dc2ac06b.png)

ちなみに、CSRFトークンの設定画面で「Null Token」がオンとなっていたので、

- トークンの変数の値が空文字列
- トークンの変数自体か存在しない

というパターンも実行している

# sWebMachineGun.exe Index

[sWebMachineGun.exe のメインメニューに戻る](https://qiita.com/tomoki0sanaki/items/e2b7767551a576b1dbd3)