1、测试分析
传入123查看页面源码,发现传入的值传给了value和a标签的href,并且对特殊字符<>" ' 都进行了HTML实体化,对于大小写进行了转化,过滤掉了src、data、onfocus、href、script、"(双引号)
因为页面源码中有一个<a href=" ">,所以我们可以通过传入JavaScript伪协议:javascript:alert(1),进行绕过,但对script有过滤,又因为href带有隐藏属性:自动Unicode解码
2、构造payload
所以这就是不在value属性进行闭合,所以对javascript:alert(1)进行Unicode编码
HTML字符实体转换,网页字符实体编码
javascript:alert(1)转化后
javascript:alert(1)
3、反思:
之前进入了死循环,一直在想为什么不能在value,用同样编码的方式传入payload闭合绕过,而在a标签href上使用编码方式传入编码就可以
原因:
1、href自带隐藏属性可以进行Unicode解码
2、js的伪协议可以让浏览器自动渲染js代码
4、总结:
1、之前理解HTML实体化就Unicode编码
2、<a href=" ">中自带隐藏属性会进行Unicode解码
3、学会新绕过对payload进行编码绕过方式