2

我们所做的一些网站中大约有 2 个被黑了。我们花了几个小时试图看看出了什么问题。漏洞是str_replacevs \0[ Null Char]

str_replaceSingle Quotes [']. _

就像是:

    $str = 'java\0scr\0ip\0t:alert(\"XSS\")';
    $clean_null_chars = str_replace('\\0','_[_blabla_]_',$str);

//Show the cleaned version
    var_dump($clean_null_chars); // string 'java_[_blabla_]_scr_[_blabla_]_ip_[_blabla_]_t:alert(\"XSS\")' (length=62);

        echo $clean_null_chars; //java_[_blabla_]_scr_[_blabla_]_ip_[_blabla_]_t:alert(\"XSS\")

但是,使用str_replacewith Double Quotes ["],没有任何反应

就像是:

 $str= "java\0scr\0ip\0t:alert(\"XSS\")";
        $clean_null_chars = str_replace('\\0','_[_blabla_]_',$str);

    //Show the cleaned version
        var_dump($clean_null_chars); //string 'java�scr�ip�t:alert("XSS")' (length=26); 
    // ....[Notice the _Null Char_  rendered as question marks in var_dump]

   echo $clean_null_chars;// javascript:alert("XSS") 

因此,一些天才设法利用了这个漏洞。

这是任何一个或参与str_replace时的正常行为吗?Single QuotesDouble Quotes

在这里http://php.net/manual/en/function.str-replace.php他们同时使用了两者[']["]没有提到不同的行为。

有任何想法吗??

4

0 回答 0