xss漏洞之进制转换.docVIP

  • 101
  • 0
  • 约 5页
  • 2017-06-08 发布于重庆
  • 举报
xss漏洞之进制转换

SQL注入的事件已经是上个世纪最令人头疼的攻击方法,21世纪又出现了HTML注入漏洞,随着web飞速的发展,XSS漏洞已经不容忽视,简单介绍一下XSS漏洞, 只要有用户输入的地方,就会出现XSS漏洞,例如在发表一篇帖子的时候,在其中加入脚本。 1.HTML标签注入: Html代码 scriptalert(Hello World!)/script 很简单,就是用alert输出一个Hello World文本,如果在帖子内容里,出现了这样的语句,浏览器会执行这个脚本: 很多网站为了避免XSS的攻击,对用户的输入都采取了过滤,最常见的就是对转换成lt;以及gt;,经过转换以后虽然可在正确显示在页面上,但是已经不能构成代码语句了。这个貌似很彻底,因为一旦被转换掉,什么script src=1.js/script就会转换成“lt;script src=1.jsgt;lt;/scriptgt;”,不能执行,因此,很多人认为只要用户的输入没有构成,就不能闭合前后的标签,其语句当然也不会有害,但是,万事总有可能,只要有一定的条件,我们就可以构造经过编码后的语句来进行XSS,稍候我会提到16进制、8进制转换,以及混合转换。 2. HTML属性注入 于是程序员想办法封堵这个漏洞,过滤了script/script 标签,那么在页面上就不会执行这段js代码, 于是乎,黑客想了一个不用script标签的办法,注入html, 怎么回事呢? 是这样: img src=/uploadfile/2012/1125/20121125011027133.png 正常情况下,img的src标签是指向一个web服务器的图片URL,但是也可以替换为: img src=javascript:alert(Hello world!) 这样黑客通过绕道的形式,绕开了程序员的过滤,顺利执行了XSS攻击 程序员见况,同理有过滤了用户输入的src属性,过滤掉里边的javascript开头的关键字,暂时封堵了XSS。 3.ASCII 10进制转换继续XSS javascript:alert(Hello world!)可以用HTML 10进制ASCII编码代替: 格式:#(ASCII10进制编码); #106;#97;#118;#97;#115;#99;#114;#105;#112;#116;:alert(Hello world!) img标签变为: img src=#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;:alert(Hello world!) / ASCII 10进制转换,同样适合于HTML标签注入: 例如: 把scriptalert(Hello world);/script标签转换成10进制 ASCII转义字符: #60#115#99#114#105#112#116#62#97#108#101#114#116#40#34#72#101#108#108#111#32#119#111#114#108#100#34#41#59#60#47#115#99#114#105#112#116#62; 接下来,使用URL编码得到: %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%48%65%6C%6C%6F%20%77%6F%72%6C%64%22%29%3B%3C%2F%73%63%72%69%70%74%3E 然后放入到参数中: /a=%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%48%65%6C%6C%6F%20%77%6F%72%6C%64%22%29%3B%3C%2F%73%63%72%69%70%74%3E 接着程序员用JSP得到参数 % string str_a = rrequest.getParameter(a);% var a= %=str_a% document.write(a); 同样会引发XSS漏洞 4. ASCII 16进制转换 格式: #x(ASCII16进制编码); img src=#x6A;#x61;#x76;#x61;#x73;#x63;#x72;#x69;#x70;#x74;:alert(b) 与10进制ASCII转义一样,只不过换了一种进制规则表示 5. ASCII 8进制转换 其实16进制还有一种表现形式,与8进制类似 格式:\x(ASCII 16进制编码) 格式:\(ASCII 8进制编码)

文档评论(0)

1亿VIP精品文档

相关文档