low
$message = stripslashes( $message ); $message = mysql_real_escape_string( $message );
stripslashes() 函数删除由 [addslashes()]函数添加的反斜杠
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符,如 \n \r \ ' " 等
在这里面并没有真正过滤跟<script></script> 有关的东西,
所以直接输入<script>alert("xsss")</script>即可
medium
$message = strip_tags( addslashes( $message ) ); $message = mysql_real_escape_string( $message ); $message = htmlspecialchars( $message ); $name = str_replace( '<script>', '', $name ); $name = mysql_real_escape_string( $name );
在message中
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符,如 \n \r \ ' " 等
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
这三个特别是htmlspecialchars() 转换为html实体造成不能注入,但是在name参数下依旧可以构造注入,name只替换了<script>和转译特殊字符,但是在输入语句的时候发现有字数限制,所以用burp抓包改包。
可以用双写,大小写绕过<sc<script>ript>alert("xsss")</script> <Script>alert("xsss")</script>
High
$message = strip_tags( addslashes( $message ) ); $message = mysql_real_escape_string( $message ); $message = htmlspecialchars( $message ); $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );
name用正则过滤了<script> 以及大小写,但是没有过滤img等标签啊,抓包改包用<img src=1 onerror=alert("xss")>