6.换行符复仇记

作者:心伤的瘦子

来自:PKAV技术宅社区

网址:http://www.pkav.net

---------------------------------------------------------------------------------

简要描述:

还是在<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);//

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

(PS:为什么注释里会输出内容?我们知道JavaScript不会执行注释,在网上百度了一下,发现这样的例子几乎搜不到,只搜到了一个类似的:JS代码注释后仍被编译,没有达到删除的效果,注释掉的代码仍然会产生问题

以下是内容:

还是不太明白,继续学习,过后再来解决。

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

7.修复方案:

尽量不要在JS的注释里输出内容。还挺危险的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值