概述
XSS漏洞原理
XSS(cross site scripting) 跨站脚本攻击,攻击者将自己的恶意js代码让受害者浏览器执行。
漏洞危害
可能会导致窃取凭证、篡改页面、构造xss蠕虫等。
漏洞防范
- 如果对简单的输入框,则需要识别和转义特殊字符,包括尖括号、引号、javascript中任意字符等。
- 针对功能复杂的富文本输入框,建议使用成熟的前端富文本输入框组件,如ueditor等。
- 在HTTP响应头中,为set-cookie选项额外添加http-only的值。
通关记录
第一关
发现输入点为url,将其附加所需的弹窗的JS代码 <script>alert()</script>,即可通过。
第二关
按第一关的方法,发现JS代码被合并,因此补全前面的 ”> ,JS才有效。
第三关
查看页面源码,发现可将传进去的值的前面的引号闭合,因此可用输入
?’ οnmοuseοver=“alert(); ‘
第四关
查看页面源码,发现传进去的值会被前面的引号闭合,因此可用输入
?” οnmοuseοver=“alert(); “
第五关
引入超链接绕过,即
as"> <a HREF=javascript:alert(1)>aaa</a>
第六关
使用超链接,并将script字样进行html实体转义,语句同上一关。
第七关
根据页面源码,发现onmouseover等函数会被割舍前两个字符on,因此可双写该
部分字符达到绕过,即
as" oonnmouseover="alert(1)">
第八关
可知输入框的内容为链接内容,所以利用超链接的构造语句,将其输入到其中。
第九关
经过多次尝试,发现输入必须含有 http 字眼才合法。但当http被引号括起来后,左方的引号被转义成",因此再加一个双引号,即可并成一个字符串,实现script。输入内容可构造为:
javascript:alert(""http://")
第十关
查看源码发现有三个隐藏的输入框,将其type改为text,发现只有t_sort的内容会显示在value值里面。因此在第三个框里输入" οnmοuseοver="alert(1)",再将type类型更改,即可实现弹窗。
第十一关
发现t_ref会回显上一次历史记录,因此可以考虑重放,将refer的值改为
s" οnmοuseοver="alert(1)"
第十二关
思路同11,但头部信息改的地方为 user-agent
第十三关
大致思路同上,从而构造cookie