网站地图    收藏   

主页 > 后端 > 网站安全 >

那些年我们一起学XSS - 6. 换行符复仇记 - 网站安

来源:自学PHP网    时间:2015-04-17 11:59 作者: 阅读:

[导读] 还是在script之间的场景,某些情况下,我们仅仅需要的只是一个换行符,就可以绕过过滤了。 它让双引号,尖括号知道了它们不是一个符号在战斗。1.实际场景是下面这个例子。http://...

还是在<script>之间的场景,某些情况下,我们仅仅需要的只是一个换行符,就可以绕过过滤了。 它让双引号,尖括号知道了“它们不是一个符号在战斗”。
 1.实际场景是下面这个例子。

http://datalib.games.qq.com/cgi-bin/search?libid=178&FilterAttrAND=3602&FilterValueAND=aaaaaaaaaa


对应的,我们可以看到我们的输入aaaaaaaaa 会在页面的哪些输出点出现呢?

 


2. 不错,一共有5处,有在HTML标签之间的(教程1),也有在<script>..</script>之间的。但是呢,该过滤的,< , > 过滤掉了, 该过滤的 " ,也过滤掉了。。

 


3. 也就是说传统的已经不行啦,我们继续看5处的其他地方。呀,竟然还有一大段注释里,也出现了我们的【输出】

 


4. 嗯,这样一来,是否会想到这样一个用法呢?

//我是注释,我爱洗澡,哦~哦~哦~ [我是输出]


如果可以使用换行符的话。

//我是注释,我爱洗澡,哦~哦~哦~ [我是输出  换行符
 alert(1);//我是输出]


这样alert(1); 就会被成功执行。

5. 恩,带着这样一个想法,我们不难构造出以下利用。

http://datalib.games.qq.com/cgi-bin/search?libid=178&FilterAttrAND=3602&FilterValueAND=%0aalert(1);//


看下输出。嘿,果然没过滤。

 



 


6. 这样,这一次我们的换行符立功了, 它不是一个符号在战斗!
 

修复方案:
尽量不要在JS的注释里输出内容。还挺危险的。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论