level1
第一关比较简单,由于漏洞为get型,只需要更改url,将name后面修改为<script>alert(666)</script>,就可以插入弹窗了
level2
通过查询源代码,可以看到我们输入的数据,是在表单中的value属性内
于是我们插入js之前需要先将input闭合,在输入框中输入
"><script>alert(666)</script>#
成功通关
level3
由于输入script,"<"会被转换为html编码,所以这一关无法采用标签,因为标签都是带有"<"的,因此采用事件,我们可以使用一个onclick事件,经过查询源代码,我们发现可以用单引号去闭合
输入框内输入如下代码
' onclick='alert(1)
输入后再点击此聊天框
成功过关
level4
此题与level3解题思路一致,查询源码发现只需改用双引号闭合即可
使用如下代码
" onclick="alert(1)
level5
在我们试探完防御机制后可以发现:ri会被过滤成r_i,on也会被过滤为o_n,所以事件也行不通,那我们只能换一个标签进行攻击,在尝试下,我们发现href标签不会被过滤,闭合后就可以插入js代码了
"><a href="javascript:alert(1)"#
查询后点击图片
成功过关
level6
还是经过试探我们发现此关对于href进行了过滤,但是对大小写并未做出调整,所以我们采取将标签变为大写的方式进行绕过,同样闭合后插入js代码
"><SCRIPT>alert(666)</SCRIPT>#
成功通关
level7
这关我们会发现script被过滤掉了,经过探查后,我们发现在网页第一次查询过script之后不会进行第二次查询,所以我们只需要在script中插入一个script即可,这样在网站过滤时,就会留下一个script,之后就可以开始闭合插入js代码了
"><scrscriptipt>alert(666)</scrscriptipt>#
成功通关
同理on也会被过滤掉,所以我们也可以选择插入的方式来绕过,这里不做演示了
level8
由于此关对于大部分大小写以及标签和事件都做了过滤,所以只能使用html实体编码进行绕过
javascript:alert(666)
添加后点击友情链接
完成通关
level9
此关在上一关的基础上,加入了地址的检查,这一关会检查输入的数据中是否会有http://字段,所以需要在输入的字段中加入该字段
javascript:alert('http://')
完成通关
level10
此关由于没有输入框,我们只能对url进行更改,经过查询发现实际input的地方是t_sort处,同时需要对前面的双引号进行闭合
t_sort=666" onclick=alert(666) type="text"#
成功过关
level11
通过查询源代码我们可以得知,所有的变量都是用来迷惑攻击者的,真正的输入点是在http头部的
所以解题思路就为:抓包,修改http报头,插入代码
可以看到,成功插入了,接下来就是闭合并插入代码了
wsx" onclick="alert(666)" type="text"#
点击输入框,成功通关
level12
此关与11相差不大,我们依旧进行抓包,抓包后我们就会发现t_ua的value后的内容就是user agent后面的内容,那我们就可以更改user agent进行闭合插入代码,并forward
wsx" onclick="alert(666)" type="text"#
level13
此题与前两题相同,只是这回更改的是cookie,不做演示了
level14
iframe调用的文件地址无法访问,本体题目已经无法做了
level15
本关的进入方式比较特殊,由于14关出现问题,所以我们要在13关修改url为15.php进入本关
本关的变量和提示实在太少,只能通过查看源代码进行解题
通过查询我们可以得知变量名为src,
通过试探,发现所有的输入都会被注入到 ng-Include: 之后,所以先了解一下 ng-Include它的作用
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。
也就是说它的参数是一个html页面
所以我们可以更改src来访问其他页面,我们首先输入一个界面,如"level1.php"
可以看到,成工访问到了,由于level15没有注入点,所以我们可以将代码注入到level1中
加上我们查看源代码可知通过htmlspecialchars($str)函数,有些特殊字符被转码了,转为了html实体,所以我们采用其他标签的事件属性触发
src='level1.php?name=<img src= ""onerror=alert(1)>'
成功通关
level16
通过查看源码我们会发现:
script与大小写均被过滤,嵌套的部分会被空格代替,换标签输入发现空格也被编码了,所以我们将空格采用url编码输入,空格的url编码为%0A
<img%0Asrc=1%0Aonerror=alert(1)>
成功通关
level17
通过查询源码,我们可以发现,url中的两个参数被传到embed标签下,并且其本身就为闭合,我们就不用去考虑了,最后只需注意htmlspecialchars函数
所以绕过的方式如下
arg01=a&arg02= onmouseover=javascript:alert(1)
只需将鼠标移动到图片上就可以运行此js代码了
成功通关
level18
与十七关通关方式相同,embed处代码没有差别
level19&level20
解题方法为flash xss,这里不做详解了