私はクロスサイトスクリプティングに精通したいので、クラスで提供している脆弱なサンプルを悪用しようとしました。今、私はフォームが提出されたときにPHPの$_REQUEST['in']
に格納されているフォームを持っており、応答が返ってくるとそのページのどこかに印刷されます。コンテンツを印刷するには、別の変数$var
を使用して$_REQUEST['in']
から検索し、次にecho $var
を使用します。echo変数を使用してPHP変数のJavaScriptコードを出力する
私の賭けは$_REQUEST['in']
にJSコードを書いているので、戻ってくるとJSファイルがHTMLファイルに出力されて実行されます。問題は、echo
が文字<
と>
を同等の<
と>
に変更しているため、JSコードがプレーンテキストとして表示されることです。 HTMLエンコード方法は使用されていないので、私は混乱しています。なぜこのようなことが起こっているのか、私には何か示唆を与えることができますか?
これは$var
が使用されているファイルのセクションです。
<div id="feedback" class="alert alert-warning">
<?php echo $var; ?>
</div>
いくつかのエンコーディング方法を探してコードを再確認しましたが、何も表示されません。彼らにはthis JSが含まれていますが、私たちに直接提供されているわけではないので、エンコーディングはそこで行われているとは思いません。
これらは、特定のクロスサイトスクリプティング攻撃を防ぐために、おそらくコード化されています。 'echo $ var;'はどこにありますか?それは攻撃をどのように実装するかについての手がかりを提供するかもしれません。 –
"問題は、エコーが文字 '<' and '>'を同等の&lt; gt gt; - ' echo 'がそれをしないように変更していることです。それはそれを行う前のステップになります。 XSSをブロックすることは、その点で大きな部分を占めています。 – Quentin
PHPページのソースコードはありますか?どこかで 'htmlspecialchars()'(または 'htmlentities()')コールが必要です。 *要求*の中で「<」/「>」に「変換」されている場合を除きます。 –