首先往表单输入
<script>alert('xss')</script>
如下回显
查看源代码
从源代码可以知道存在三个输出点 其中第三个输出点无意义
然后可以看到第一个和第二个输出点都被htmlspecialchars()函数进行转义了
我们利用第二个输出点
我们根据htmlspecialchars()函数可以知道他会转义<,>," 所以你不能够逃出input标签 所以你需要利用的是属性值执行js代码
构造如下
' onclick=javascript:alert('xss')//
需要点击之后方可出现弹窗现象
或者说构造如下代码
' onfocus=javascript:alert('xss')//
也是成功弹窗
接着我们去查看以下后台服务器的代码
可以看的出来前两个输出点都通过htmlspecialchars()函数进行预定义字符的转移操作 所以普通的尖括号闭合行不通了 所以只能是在标签内部完成js代码的书写
第一关利用的是输出点在标签内容处用<script></script>执行js代码的思路完成弹窗命令
第二关利用的是输出点在属性值处然后通过闭合逃离单标签以通过script标签执行js代码的思路完成弹窗命令
第三关则是利用输出点在属性值处然后不能通过闭合逃离单标签只能构造属性onxxx=javascript:alert()执行js代码的思路完成弹窗命令