xss学习笔记2 存储型Stored Cross Site Scripting (XSS)

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")>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容