练习网址:http://test.xss.tv/
本人菜鸟一枚,如有分析不对的地方,望前辈们指正。
话不投机....不对,话不多说直接上图,上分析。
level1:很简单的一道题,从URL中我们可以分析到,xxx/level1.php?name=test,有一个参数;然后在firebug或源码页面找到它所在的位置,发现只有一处,在<h1></h1>标签内,直接一‘脚’踢过去<script>alert(1)</script>,哈撒ki,下一关。
leve2:
1.开始是一个搜索框,本着见框就插的原则,尝试了上一个脚本,但是没有成功;
2.查看源码(图2)发现,后面多连个符号 ">,说明我们跳不出input标签;
3.既然跳不出,那么就转遍思路,在标签内执行js事件,如:onfocus onmouseover onclick等;
4.这里使用的是onfocus(事件在获得焦点的时候发生),由于服务端会在最后加入" 为了闭合这个字符,所以将payload改造成这样:" οnfοcus="alert(1) 注:前面引号是为了闭合value="" ;
level3:
1.跟level2相似,所以使用了上述的payload尝试了一下,没有成功;
2.于是查看了一下源码,发现"被编码了,而且后面的双引号变成了单引号;
3.所以这里对level2的payload稍微做下改变,思路不变.==>' οnfοcus='alert(1);
4.点击输入框即可弹框;
level4:这里尝试了这关的payload与level2的一样,所以就不上图了。
level5:
1.这里需要注意下,这里过滤了on事件,如图2,被修改成o_nclick(1),导致无法执行;
2.然后又尝试了<script>标签,发现也同样被处理了,<scr_ipt>alert(1)</script>;
3.这里转换下思路,既然过滤了<script> on等,那就用a标签执行弹框;payload如下:
"><a href="javascript:alert(1)">xss</a//
//这个是必须有的,因为程序最后会加上">这两个字符,而//是屏蔽掉"只留下>跟闭合标签</a>组成一对,才能正常执行。点击xss后进入下一关。