XSS跨站(附编码概要小知识点)

跨站利用点:

HTML标签:script、img、a、input
HTML标签属性:src、name
JS事件(鼠标、键盘、处理的结果、变化):onresume/onreverse/onrowdelete/onrowinserted/onseek/onsynchrestored

<img src=a οnerrοr=alert(444) />
CSS样式表:expression

 

绕过方式:

空格、换行符、tab

属性值的伪协议形式:javascript:alert(/1/);
属性编码(NCR编码,css/js都可以使用):

1.NCR编码是由一个与号(&)跟着一个井号(#), 然后跟着这个字符的Unicode编码值, 最后跟着一个分号组成的。

使用UNICODE在线转换工具可以将ncr编码直接转换为汉字,但事实上它又不是UNICODE,区别似乎就在于Unicode是以\u进行分割,而NCR是以&#进行分割。后面数字字母内容(和Unicode值)是一样的, 都有十进制与十六进制两种表示形式。

NCR编码特点:

(1) 无视载体文件编码,无论是gbk编码还是utf-8编码,展示的字符都不会出现乱码,这点就是它存在的原因。
缺点:
(1) 浏览器支持度不同,比如字符A在IE浏览器支持,却在chrome浏览器不支持,甚至有可能同一字符在不同浏览器展示的内容不一样(机率非常小),所以使用时,务必在各浏览器上进行测试。
(2) 移动端对此编码支持度较差,特别是在Window phone下和UC浏览下器,直接无法显示。

2.&name:&lt、&gt

&#十进制Unicode数字值:

10进制的“中国”:&#20013;&#22269;

&#x16进制Unicode值:

16进制的“中国”:&#x4e2d;&#x56fd;

例如:

<img src=a οnerrοr="javascript:alert(999);"/> 

<img src=a οnerrοr="javascript&#58alert(999);"/> 

3.ASCII码——>Unicode:&#ASCII码值

中文——>Unicode:\U四位数字
function A2U(str) {
    var reserved = '';

    for (var i = 0; i < str.length; i++) {
        reserved += '&#' + str.charCodeAt(i) + ';';
    }

    return reserved;
}

function encodeUnicode(str) {
        let res = [];
        for (let i = 0; i < str.length; i++) {
            res[i] = ("00" + str.charCodeAt(i).toString(16)).slice(-4);
        }
        return  "\\u" + res.join("\\u");
    }

大小写绕过
注释符:<img src=a onm/**/ouseover=alert(444) />
远程加载shellcode:将要执行的XSS payload写入一个远程网页http://www.test.com,然后在攻击时选择src=http://www.test.com。

XSS downloader(XSS下载器),事先把Shellcode写在网站的某个页面,再利用XMLHTTP控件向网站发送HTTP请求(POST或GET),然后执行返回的数据.

 

 

编码小tips:

编码是指将计算机语言(01)转换成人类可以识别的语言。

ASCII码:占7位bit,可以表示128个字符;美国人标准编码

EASCII码:占8位bit,可以表示256个字符;

GB2312:一个汉字占2个字节Byte,16-24位bit;中国标准编码

GBK:罕见字和繁体字没办法处理,需要占3个字节,于是有了GBK;中国标准编码

UTF-8:动态占位(1-4个字节Byte,8-32位bit);一会儿一个字符是占用一个字节,一会儿一个字符占用两个字节,还有些生僻字占用三个及以上的字节。可以根据传输文件数据的大小动态调整编码位数。

UTF-16:占2-4个字节Byte,16-32位bit;

UTF-32:占4个字节Byte,32位bit;

Unicode编码:占4个字节Byte,32位bit。超出ASCII码编码范围的就可以用Unicode编码了,它将不同国家(美中日韩等)的字符进行统一,解决了超出ASCII编码范围之外的其他国家字符编码的统一问题;世界标准编码

所有的操作系统都支持Unicode,所有存到内存中的0101序列都是由Unicode来存储的。

URL编码:URL的编码方式。

当需要在内存中读取文件的时候,此时将utf-8编码的内存转换为unicode编码,在内存中进行统一处理;当需要保存文件的时候,出于空间和传输效率的考虑,此时将unicode编码转换为utf-8编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值