进入xss靶场
直接在url栏输入:<script>alert('xss')</script>
一下就成功了,第一个给我们一个甜头,完成后去查看源码,没有任何限制,非常轻松
进入第二关
输入:<script>alert('xss')</script>
无弹窗
直接弹窗不行了,那我们去看看网页源代码
可以看到<h2>标签的内容,我们输入的js代码被html实体化了,应该是用了htmlspecialchars()函数
但是可以看到value的值是和我们输入的值一样,那我们是不是可以试试绕过呢
输入:"><script>alert('xss')</script>"
弹窗成功,解释一下:第一个"闭合第一个",>闭合input标签,中间是js代码,后面是"闭合最后"
第三关
输入:<script>alert('xss')</script> 去做尝试
显然是不行的,我们查看以下源代码
第二关的value中的值也是被转义了,这下完蛋了!
那我们就不用<>这两个符号
但是单引号没有被转义,给了一个突破口,并且不能用<script>了
那我们只能换一种了
输入:' οnmοuseοver=alert('xss') '
成功了,on系列函数是触发式xss
解析:第一个'是闭合前面的',后面的'是闭合最后'
第四关
输入:<script>alert('xss')</script> 试试水
肯定是不行的,又去看看源代码
在value中可以看到<>没了
应该是被替换成空了
那我们也用on去触发事件
格式为”a”> 其中a是我们输入的值,输入的值中<>被替换成空
所以我们输入:" οnmοuseοver=alert('xss') "
成功,原理和第三关差不多,这就不多说了。
第五关
输入:<script>alert('xss')</script> 试试水
直接看源代码吧
很明显在r和i之间加了一个_
我们试试on去触发事件
结果是o和n之间也被添加了一个_
这让我们很难通过script和on触发事件去执行js
不过还有一种方法,输入:"><a href=javascript:alert('xss')>xss</a> "
通过a标签,超链接来触发
成功!