第一关
- 初始页面
- 改变playload的值
- 插入JavaScript代码查看是否运行正常,发现正常弹窗,通过。
<script>alert(1)</script>
- 查看源码
第二关
- 初始页面
- 改变playload的值,插入
<script>alert(1)</script>
发现无法弹窗成功。
- 查看前端的代码,发现有两处是我们插入的值,并且一个是value值,我们考虑对value进行闭合。
进行闭合"><script>alert(1)</script>
,发现提交之后成功通过。
- 查看源码,发现value那里没有进行如何处理就直接插入。
第三关
- 初始页面
- 插入JavaScript代码,插入
<script>alert(1)</script>
发现无法弹窗成功。
- 查看前端的代码,发现和第二关一样。
然后插入"<script>alert(1)</script>
进行闭合,发现虽然成功闭合了但是无法成功通过。
更换为onclick标签之后发现攻击成功,'onclick='alert(1)
- 查看源码,发现对value进行插入时还进行了转为html处理(只是针对大于号和小于号进行处理),并且是单引号闭合的,因此我们可以考虑不需要使用到大于号和小于号的onclick函数进行弹窗。
第四关
- 插入
<script>alert(1)</script>
,发现返回的是去除<>符号的字符串。
- 考虑使用onclick函数,经过多次闭合的尝试,
"onclick="alert(1)&submit=搜索
- 源码,发现去除<>符号之后就直接插入到字符串中。
第五关
- 插入
<script>alert(1)</script>
,发现插入的<script>
转化为<scr_ipt>
。
- 插入
"onlick="alert(1)
,发现onclick
被转化为o_nclick
。
- 根据上面的可以发现,没有过滤掉尖括号,因此我们可以构造a标签再尝试利用a标签的href属性执行javascript:伪协议,
"><a href='javascript:alert(1)'>
- 查看源码。
第六关
- 进行插入,发现插入的
<script>
转化为<scr_ipt>
,并且onclick
也转化为了o_nclick
,然后使用href
也发现被转化为h_ref
但是经过多次的尝试,发现没有对大小写进行处理,因此可以使用大小写进行绕过。"><a hRef='javascript:alert(1)'>&submit=搜索
- 查看源码
第七关
- 经过多次的插入尝试,发现本关对用户输入script、onclick、src、href的大小写进行了处理,
- 插入进行双写,经过多次的尝试,发现
"><scrscriptipt>alert(1)<%2Fscrscriptipt>&submit=搜索
能够进行插入。
- 查看源码
第八关
- 经过多次的尝试,发现对script、onclick、src、href进行了大小写校验以及转化,而不是像第七关的对字符串进行删除。如下。
- 经过多次的大小写测试,发现伪协议
javascript:alert(1)
也被过滤掉了。然后考虑使用HTML编码进行测试,发现成功攻击javascript:alert(1)
。
- 查看源码
注:这里由于是需要点击友情链接才能触发的,所以需要javascript标签
第九关
- 经过多次的尝试,发现
javascript:alert(1)
被处理掉了,并且经过HTML编码之后也一样。
- 经过多次的尝试之后发现无法进攻成功,于是在网上看到需要校验
http://
这个字符串,因此只需要在第九关的基础上加上校验的字符串即可。javascript:alert(1)//http://
- 查看源码
第十关
- 提交
<script>alert(1)</script>
,发现有三个隐藏的标签,并且还过滤了尖括号。尝试编码不能绕过,无法构造事件触发xss、无法利用属性的javascript协议、无法利用css注入。
- 经过网上的提示,这一关没有输入的地方,需要在url地址栏中输入,这一时输入是隐藏的,也就是说keyname并不是要注入的地方,真正注入的地方是三个input,不过这三个被隐藏了,所以需要去试探这三个那个是正确的,最终发现t_sort是注入的地方。
t_sort=123
- 经过一次次的尝试,发现
t_sort=123" type="text" onclick="alert(1)
能够过关
- 查看源码
第十一关
- 由于该关卡和上一关一样,都是没有输入的地方,根据上一关的经验,可以一个个试出注入点是
t_sort=good job!
。
- 直接复制上一关的注入代码,发现双引号被实体化了。
t_sort=123" type="text" onclick="alert(1)
- 经过上两个的测试,我们接下来考虑到referer进行注入,结果发现确实在referer存在注入点。
" type="text" onclick="alert(1)
- 查看源码
第十二关
- 查看前端代码,发现注入点是user-agent
- 于是在user-agent里面写入第十一关的注入语句,发现执行成功。
" type="text" onclick="alert(1)
- 查看源码
第十三关
- 查看前端代码,发现有一个新增的代码,猜测此处为注入点,在cookie中进行注入。
结合这里的信息,猜测变量应该是user。
- 注入
user=" type="text" onclick="alert(1)
,发现成功了。
- 查看源码