来源:自学PHP网 时间:2015-04-17 14:47 作者: 阅读:次
[导读] 今天在刺的ppt里看到一个非常有趣的xss例子script type=text/javascript!-- 输出到 html 事件中var y= #39;x\#x27;);alert(1);//#39;; // 同时做了 htmlencode 和 jsencode 都不管用, 都会......
今天在刺的ppt里看到一个非常“有趣”的xss例子 <script type="text/javascript"> <!-- 输出到 html 事件中 var y= 'x\');alert(1);//'; // 同时做了 htmlencode 和 jsencode 都不管用, 都会造成XSS
//--> </script>
那咱先看下这个例子
var x ='thanks'; alert(''+x+''); </script> 输出:thanks 可以从中体会下引号是怎么用的,尤其是var x=thanks和 var x=‘thanks’的区别 因为程序员也常写出var x='$thanks'这种错 那么我们现在再回头看刚才那个例子 1.首先x\');alert(1);//;这个字符串是精心构造的既html encode('是')又js encode(就是\转义) 2.接下来,以上这个y字符串被插入<a>中 3.onclick事件的时候,进行了一次 js decode,\被转出来 注意,是onlick事件即js2html有了这次js decode,而不是执行alert本身会decode,不信可以alert('\'+y+'\');试试 4.document.write事件时,再进行html decode,从而全部转义完成,dom xss完成 我的体会是这样的,无论是js2html或是html2js,相互调用时总是有相应的一个decode的过程 摘自:Thanks' blog |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com