2016-05-23 13 views
0

私はクロスサイトスクリプティングに精通したいので、クラスで提供している脆弱なサンプルを悪用しようとしました。今、私はフォームが提出されたときにPHPの$_REQUEST['in']に格納されているフォームを持っており、応答が返ってくるとそのページのどこかに印刷されます。コンテンツを印刷するには、別の変数$varを使用して$_REQUEST['in']から検索し、次にecho $varを使用します。echo変数を使用してPHP変数のJavaScriptコードを出力する

私の賭けは$_REQUEST['in']にJSコードを書いているので、戻ってくるとJSファイルがHTMLファイルに出力されて実行されます。問題は、echoが文字<>を同等の&lt&gtに変更しているため、JSコードがプレーンテキストとして表示されることです。 HTMLエンコード方法は使用されていないので、私は混乱しています。なぜこのようなことが起こっているのか、私には何か示唆を与えることができますか?

これは$varが使用されているファイルのセクションです。

<div id="feedback" class="alert alert-warning"> 
    <?php echo $var; ?> 
</div> 

いくつかのエンコーディング方法を探してコードを再確認しましたが、何も表示されません。彼らにはthis JSが含まれていますが、私たちに直接提供されているわけではないので、エンコーディングはそこで行われているとは思いません。

+0

これらは、特定のクロスサイトスクリプティング攻撃を防ぐために、おそらくコード化されています。 'echo $ var;'はどこにありますか?それは攻撃をどのように実装するかについての手がかりを提供するかもしれません。 –

+0

"問題は、エコーが文字 '<' and '>'を同等の&lt; gt gt; - ' echo 'がそれをしないように変更していることです。それはそれを行う前のステップになります。 XSSをブロックすることは、その点で大きな部分を占めています。 – Quentin

+0

PHPページのソースコードはありますか?どこかで 'htmlspecialchars()'(または 'htmlentities()')コールが必要です。 *要求*の中で「<」/「>」に「変換」されている場合を除きます。 –

答えて

1

それが最終的なエコーはサイドノートでhtmlentitiesまたはhtmlspecialchars

である前に、エコーが時々失敗し、それはちょうどあなたがそれで投げる出力は何もしようとしたものに変更を加えていない、どこかのように私に聞こえます!

関連する問題