パスワード変更画面の場合2

# sWebMachineGun.exe実践編

「[パスワード変更画面の場合1](https://qiita.com/tomoki0sanaki/items/3bd8b35ce03fe6f905f0)」では、パスワードだけでしたが、パスワード以外の変数もある場合、パスワード以外の変数の置換中に、パスワードも変更されてしまう。
その際、「旧パスワード」は置換後文字列ではないので、そういう時にどうするか。

置換文字列から元に戻すリクエストと、元々の更新パスワードを元に戻すリクエストの二つを用意する。
という方法もあるけど・・・

ポイントは、sWebMachineGun.exeでは、マクロ「%Qst%～%Qend%」という置換対象が重複変数の時は、「%R%」と同じようにふるまい、そうでない場合は「～」の部分に置き換わるというマクロがあるので、それを使う

## 診断対象

こんな感じ
<table border="1">
<tr><th align="center">パスワード変更画面</th><th align="center">結果画面</th></tr>
<tr><td><a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/6f33925e-407f-c96f-7a1c-324b288f1004.png"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/6f33925e-407f-c96f-7a1c-324b288f1004.png" width="70%" height="70%"></a></td><td><a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/0455f27c-7321-0ab8-110d-cef53f30b31d.png"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/0455f27c-7321-0ab8-110d-cef53f30b31d.png" width="70%" height="70%"></a></td></tr>
<tr><td colspan="2" valign="top">POST /sanaki/yourdata/testPasswordChange.asp HTTP/1.0<BR>
Content-Type: application/x-www-form-urlencoded<BR>
Content-Length: 0<BR>
<BR>
Tel=03-0000-0000&oldPassword=password&NewPassword=Newpassword&NewPasswordConfirm=Newpassword</td>
</tr>
</table>

変数「NewPassword」と「NewPasswordConfirm」は同時に置換していく必要があるが、重複と異なる「電話番号」という変数の存在が「[パスワード変更画面の場合1](https://qiita.com/tomoki0sanaki/items/3bd8b35ce03fe6f905f0)」との違いとなる

## sWebMachineGun.exeの設定

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

### sWebMachineGun.exeの設定1

「Request」タブに、二つのHTTPリクエストを設定する

最初は置換処理のメインとなるHTTPリクエスト

![031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/f41ac74e-92c4-df10-06e4-8ce5ac73b5eb.png)

この画面は、「[パスワード変更画面の場合1](https://qiita.com/tomoki0sanaki/items/3bd8b35ce03fe6f905f0)」とかと同じなので、特に説明は不要だろう

二つ目は、もしパスワードが更新されたときに備えて、再び元のパスワードに戻すリクエストが必要。
そうしないと、一度パスワード更新に成功してしまうと、それ以降は「既存のパスワードと一致しません」というエラーばかり出て、脆弱性診断にはならない
「直近5回のパスワードには戻せません」というメッセージが表示されるようなら、リクエストを6回分用意して、最終的に元のパスワードに戻す必要があるかもしれない

![032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/334234a4-67ad-6b61-a27d-d6facd295376.png)

変数「oldPassword」の値が「%Qst%newPassword%Qend%」となっているのが「[パスワード変更画面の場合1](https://qiita.com/tomoki0sanaki/items/3bd8b35ce03fe6f905f0)」と違うところ。
これは、置換対象が重複パラメータだった場合は、置換後文字列に置き換わり、そうでない場合は「newPassword」に置き換わる。

### sWebMachineGun.exeの設定2

「Setting」タブは「[パスワード変更画面の場合1](https://qiita.com/tomoki0sanaki/items/3bd8b35ce03fe6f905f0)」と同じなので、説明は不要だろう

![025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/9eb709c0-14d3-4d93-d5a4-2baa6d302a56.png)

「Duplication」というボタンを押下して、ダイアログを表示させる

### sWebMachineGun.exeの設定3(Duplicationの設定)

「Setting」タブの「Duplication」ボタンの押下で表示されたダイアログ/ウィンドウも「[パスワード変更画面の場合1](https://qiita.com/tomoki0sanaki/items/3bd8b35ce03fe6f905f0)」と同じなので、説明は不要だろう

![026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/d74cc9ce-c6ad-a558-143f-688e5ebaa9ae.png)

## sWebMachineGun.exeの実行

「Execute」ボタンで、実行できるのですが、結果はこんな感じで、変数「Tel」の時のマクロ「%Qst%～%Qend%」は「～」の部分、つまり「newPassword」になっている

![033.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/0b195aea-293c-2fef-9c09-64b0e6e14086.png)

置換対象変数が重複パラメータの時はマクロ「%Qst%～%Qend%」は置換後文字列になっている

![034.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182822/b0ffbc0a-6829-2792-03d3-5b876c97b60f.png)

# sWebMachineGun.exe Index

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