目次
1.EASYのブレークスルーを比較する
2ページ
このページは単純ですが、OCD╮(╯-╰)╭について書かないと不快です
このページは質問をします:WebGoatの範囲内の複数のページのCookieは同じですか?
直接はいたいのですが、プロセスを見ていきましょう
最初のページで、開発者ツール(私はchromeを使用)を開き、コンソールにdocument.cookieと入力します
Cookieが「JSESSIONID = KDno80WzTKHgbTZZ2SP0-xQmVR7M5m5GTNGHHrBp」であることがわかりました
2番目のページで、開発者ツールを開き、コンソールにalert(document.cookie)と入力して、Cookieが最初のページと同じであることを確認します。
(document.cookieとalert(document.cookie)のどちらを入力してもかまいません。別の方法で体験してください〜( ̄▽ ̄)〜)
プロセスの最後に、「はい」と記入しましょう
7ページ
このページでは、XSSがある場所を試すためにalert()またはconsole.log()が必要です
XSSは最終的にブラウザによってレンダリングされるため、最初に[購入]を押して、エコーされる入力を確認できます。
上の写真からわかるように、電話番号の入力ボックスの入力パラメータがエコーされます
この入力ボックスに入力してみてください
<script>alert('I win this game')</script>
警告がポップアップし、税関が通過します
console.log()の効果を再試行してください。。入る
<script>console.log('I win this game')</script>
何も起こらなかった。。。ただし、開発ツールを開くと、コンソールに一連のレコードが表示されます。
余談:
8ページにリンクがあります
クリックしてもレベルを超えなかったのですが、腫れはどうしたの?
コードを見ると、通関時に少し穴が開いていました。matches()関数を使用して、文字列が正規表現と一致するかどうかを確認します。次の図のコードの正規表現は、次のように記述されています。つまり、field1 <script>で始まり</ script>で終わるように書く必要があります。そうしないと、合格できません。
ただし、このクリアランスチェックは実際にはポップアップボックスには影響しません。7ページに戻って入力してみましょう。
<script>alert(1)</script>123456
それでもポップアップしますが、クリアランスは失敗します
8ページに戻り、リンクのfield1の電話番号を削除し、クリーンなスクリプトタグのみを残します。クリアすることはできますが、このURLは必要なページではなくjsonデータを返すため、ポップアップしません。ブラウザによってレンダリングされます。。
したがって、8ページで述べたように、7ページは自己娯楽のための自己XSSです。。。
10ページ
免責事項:Ben XiaobaiはJavaScriptについて少ししか知りません。このレベルは、主にJavaScriptコードの監査に関するものです。BenXiaobaiは半分推測しています。間違いや脱落があった場合は、通りすがりの神が私を訂正してくれることを願っています。
このページでは、テスト用のパスを見つけるように求められ、JavaScriptコードで見つける必要があることを確認します。
プロンプトによると、私はそれを考えずに開発者ツールを開き、Sourcesに来て、それから私は自分の心を使おうとしていました。
まず、WebGoatフォルダーの下にあるjsフォルダーを見つけ、次にjsフォルダーを右クリックしてフォルダーを検索します。
ルート検索を行い、下の図の3つの結果を検索します。まず、libsフォルダーを除外し、残りの2つのコンテンツを確認します。goatApp.jsのコンテンツは非常に単純です。読んだ後で除外することもできます。焦点は以下にあります。GoatRouter.jsを見てください。
GoatRouter.jsをクリックし、Ctrl + Fを押して検索バーを表示し、ルートの検索を続けます。パスが定義されている場所があることを確認します。testというパスがあり、その後にparamパラメーターを続けることができます。 。
もっと勇気があるなら、今すぐ答えを提出することができます:start.mvc#test
あなたが臆病であるならば、あなたは降りて観察することができます
testRouteがGoatRouter.jsのどこにあるかを検索し、testRouteがparamパラメーターをlessonControllerのtestHandler()にスローしたことを見つけます。
lessonController.jsを開き、testHandlerを探して、それがparamをlessonContentViewのshowTestParam()に再度スローしたことを確認します。
lessonContentView.jsを開き、showTestParamを検索します。実際には、パラメータはページに直接出力されます。
したがって、この質問に対する答えは次のとおりです。start.mvc#test
このパスを使用して、DOMXSSペイロードを作成してみましょう。
アドレスバーを入力してください:http://192.168.101.16:8222 / WebGoat / start.mvc#test / %3c%73%63%72%69%70%74%3e%61%6c%65%72%74% 28%31%29%3c%2f%73%63%72%69%70%74%3eは、以下に示す一般的なポップアップボックスになります。
(%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%31%29%3c%2f%73%63%72%69%70%74% 3eは<script> alert(1)</ script>のurlエンコードです。エンコード用にburpsuiteのDecoderモジュールに直接スローしたので、すべての文字が一度にエンコードされます...実際、エンコードできるのは/としてのみです。 %2f、つまり、http://192.168.101.16:8222 / WebGoat / start.mvc#test / <script> alert(1)<%2fscript>と入力し、残りのコード化されたものを入力すると、ブラウザは次のように処理します。それ自体、機知に富んだ後ブラウザによってエンコードされたURLは実際には次のとおりです。
http://192.168.101.16:8222/WebGoat/start.mvc#test/%3Cscript%3Ealert(1)%3C%2fscript%3E)
余談:
この質問は、jsのフォルダーを検索するときにテスト用に検索して、後方にプッシュすることもできますが、前方にプッシュする方が簡単なようです。
11ページ
このページでは、DOM XSS攻撃を実装するために前のページで見つかったパスを使用する必要があり、ブラウザーコンソールで乱数の文字列が取得されます
前のページの前兆として、ペイロードの直接的な構成は次のとおりです。
訪問後、ページに何も表示されません。開発ツールを開き、コンソールに入ります。探している乱数(下の図で最後に強調表示されている部分)が表示され、図の入力ボックスに入力します。上記および合格に提出します。
12ページ
このページには5つの多肢選択問題が含まれており、その回答を次の図に示します。