标签归档:XSS

XSS编码的那些事

0x01 标签属性里的那些事

比如img标签的src属性、div的style属性、a标签的href属性 等等
以下代码,a标签的href属性

<a href="&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;
&#39;&#88;&#83;&#83;&#39;&#41;">点击我</a>(备注 &#106;为十进制的编码  &#x6A 为16进制的编码,他们之间中间多了个x,你懂的16进制0x01的x就是代表16进制)

把以上代码放在浏览器上运行看效果源代码

<a href="javascript:alert('xss')">点击我</a>

这个过程貌似为
A攻击者请求(恶意代码)—–服务器端接收我这个编码的代码,并判断是否存在恶意代码,如果不存在则返回给浏览器———–浏览器则负责解析我这个编码的代码——–攻击代码已经呈现(备注:好像是这样的,如果不对,望大牛们指点啊)
接下来我们再分析下 标签属性是否可以解析\u003c、\x3c 等编码

<a href="\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3a\x61\x6c\x65\x72\x74\x28\x31\x29">test</a>

经过测试,浏览器的属性解析不识别这种,那这个在什么时候识别呢?请看下面介绍。

0x02 标签的事件与script标签

对于上面的问题我在这里做出来onerror=”alert(‘\x6a’)” 这样就没问题啦。
接下来我们来看看这个script标签

var t="\u003cimg src=x onerror=alert(1)\u003e";
document.write(t);
alert("\x3c");

以上代码都可以识别,有木有找出规律?
但是这样的代码 能被解析,但不能被执行

var x="<img src=x onerror=alert(2)>";
document.write(x);

你们可根据以上这些规律,编写出适合自己业务的代码过滤方法
你现在了解style属性里面的expression过滤是否有用,是否考虑到编码的情况?

0x03 总结

这些字符编码,是很多开发者容易忽略的。望看了这篇文章,对你开发安全的网站程序 有帮助