个人技术分享

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)转化后

&#x6A;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3A;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

3、反思:

之前进入了死循环,一直在想为什么不能在value,用同样编码的方式传入payload闭合绕过,而在a标签href上使用编码方式传入编码就可以

原因:

1、href自带隐藏属性可以进行Unicode解码

2、js的伪协议可以让浏览器自动渲染js代码

4、总结:

1、之前理解HTML实体化就Unicode编码

2、<a href=" ">中自带隐藏属性会进行Unicode解码

3、学会新绕过对payload进行编码绕过方式