我们输入平常的payload如下
<script>alert('xss')</script>
界面回显如下
源代码如下所示
可以发现后台服务器对特殊字符进行插入操作
我们寄希望于后台不要插入下划线到onxxx关键字中 所以构造如下
" onclick=javascript:alert('xss')>//
由于界面没有回显 我们去查看源代码 果然不能太过于信任自己的希望 那么应该所有的onxxx都被进行了替换操作了
所以我们只能够通过往a标签中的href属性植入弹窗命令了
构造如下
"><a href=javascript:alert('xss')></a>//
没想到这个也被搞了 哎
通过上一关的后台服务器代码我们可以知道对整个关键字或者一部分的关键字进行了替换操作 所以我们只需要将关键字的字母都换成大写即可
比如我们可以如下构造
" ONCLICK=javascript:alert('xss')>//
界面成功弹窗
我们也可以尝试以下构造
"><a HREF=javascript:alert('xss')>xss</a>//
界面回显如下
通过全字母大写可以逃逸恶意替换的命运
接着我们可以查看以下后台服务器的代码
对于第一个输入点 是通过htmlspecialchars转义后插入
对于第二个输入点 则是先对一些关键字进行了一系列的替换操作 然后最后插入到指定位置