第九关过滤的很严 , 使用编码绕过
![](https://img-blog.csdnimg.cn/20210708173618302.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd5dXhpYW5nOTQ2,size_16,color_FFFFFF,t_70)
先看源码 , 过滤了大小写 , on 事件 , script , 以及一些属性 ,把参数拼接到 value值的时候 还编译了
![](https://img-blog.csdnimg.cn/20210708173723860.png)
![](https://img-blog.csdnimg.cn/20210708173830323.png)
htmlspecialchars() 把预定义字符 ( & , " , ' , < , >) 转换为HTML实体 , 也就是不起作用
并且参数中还需要包含 'http://' 字符串
![](https://img-blog.csdnimg.cn/20210708210547109.png)
标签和事件属性都不能用 , 只能用编码了 , s 的HTML编码是 s , 编码后的内容需要包含 'http://' , 再用//注释掉 'http://' 使其不起作用 , payload
javascript:alert(9) //http://
拼接后的代码如下
![](https://img-blog.csdnimg.cn/2021070821112073.png)
过关
![](https://img-blog.csdnimg.cn/20210708211137367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd5dXhpYW5nOTQ2,size_16,color_FFFFFF,t_70)