2017-04-24 12 views
0

私はxssでエクササイズをしようとしていますが、エコーで動作するはずです。私は概念とhierに基づいて練習をしています。私はxssに脆弱なhtmlspecialcharsを間違って使用しています。しかし、これは実際には機能していないと私は理由を取得しません。ここに私のコードはなぜこのxssは機能しないのですか

$name=htmlspecialchars($_GET['myname']); 


echo "<HTML><body>";   
echo '<form action="">'; 
echo "name: <input type='text' name='myname' ><br>"; 

echo "<input type='submit' ></form>"; 

echo $name; // here I want the xss to execute a popup box 

echo "</HTML></body>"; 

入力スクリプトはこのようになります。

<script>alert();</script> 

私も多くの選択肢を試しました。入力したスクリプトが表示され、警告ボックスは表示されません。

+3

https://security.stackexchange.com/ –

+1

あなたはhtmlの前にbodyタグを閉じることになっています。あなたのフォームにもメソッドを追加してください。 – Akintunde007

+3

@Akin HTML5ではいくつかのタグを閉じる必要はなく、メソッドが与えられていなければGETとみなされます。 – DaveP

答えて

3

私は概念とhierに基づいて練習をしていますが、私はxssに脆弱なhtmlspecialcharsを間違って使用しています。

しかし、あなたはしません。 htmlspecialcharsは使用されているとおりに正確に使用されており、XSSから保護されています。

+0

ではありません。 ENT_QUOTESは設定されていません。正しい方法はhtmlspecialchars($ string、ENT_QUOTES、 'UTF-8')です。 – zeroday

+0

@zeroday 'ENT_QUOTES'はここでは無関係です(単に' ''と ''がエスケープされる方法に影響します) '<' and '> '文字はまだエスケープされているので、'

2

私は

あなたの使用量は、あなたが持っているコードの残りの部分について間違っていない、そしてそれがためにXSSに対して脆弱ではないのXSSに対して脆弱であるはhtmlspecialcharsの間違った使用法を、持っていますあなたが持っているコード。唯一の引数でhtmlspecialcharsを使用

<">、および&文字が安全になり、デフォルトの設定を使用しています。

テキストノードを置くことができるコンテンツが出力されているときは、これは絶対に問題ありません。

あなたがいるとき、あなたのHTMLを保護するのに十分ではありません主な状況は次のとおりです。'の代わりに、属性値 内のデータを置く"

  • を使用して属性値を区切る

    • 'がエスケープされるように、それはENT_QUOTESが必要なときです。そうでなければ、最終的には次のようになります。

      $user_input = "' onmouseover='alert(1)'"; 
      ?> 
      <body data-userinput='<?php echo $user_input; ?>'> 
      

      ... JSをトリガする新しい属性を追加することができました。

      (JSまたはURLにデータを挿入する場合は、別の消毒技術も必要です)。

  • +0

    どのようにこれらの作業注入について説明することができますhttps://security.stackexchange.com/questions/145716/xss-bypass-strtoupper-htmlspecialcharsとこのビデオhttps://www.youtube.com/watch?v=EjiCSWKlsWI – zeroday

    +1

    @zeroday - 「どのようにしてこれらの作用注射を説明することができたか」 - 私は解答**で**を説明した。それは私がデモしたのと同じように、一重引用符で区切られた属性に値を置きます! (そして、私は行くつもりはないし、ビデオを見る、私はそれのための時間がない)。 – Quentin

    関連する問題