网络安全/渗透测试/代码审计/
关注
宽字节复仇记
前面教程第2节,说到了输出在<script>..</script>之间的情况。也说到了后面会再继续一些有意思的例子。
实际上,我们碰到的往往不是那么好。很多情况下,程序员都是会过滤的。那么我们怎么办呢?
“因地制宜,因材施教。” 根据漏洞的实际情况,我们可以各种绕过。不知道这里乱用成语没啊。惶恐不安中。
这里先看看第一种方法,宽字节绕过。
1. 有一个比较经典的SQL注入,是宽字节注入。玩渗透的可能对这个都比较清楚。 2. 有时候,宽字节确实可以带来奇效~~下面我们看腾讯的一个例子。 3. 例子如下:
http://open.mail.qq.com/cgi-bin/qm_help_mailme?sid=,2,zh_CN&t=%22;alert(1);//aaaaaa
我们尝试注入 " 来闭合前面的双引号,但是很悲剧的是,双引号被过滤了。 如下图:
看到这种情况,一般人估计会放弃了吧,至少说明程序员注意到了这里,并且过滤了。
然后我们可以看到编码是:
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
gbxxxx系列的编码,那么我们尝试一下宽字节呢?
http://open.mail.qq.com/cgi-bin/qm_help_mailme?sid=,2,zh_CN&t=%c0%22;alert(1);//aaaaaa
看看效果:
弹个窗:
利用宽字节,我们华丽的复仇了“腾讯对双引号的屠杀”。
至于这个漏洞的成因,和传统的宽字节漏洞并不一样。
目测应该是由于过滤双引号的正则表达式写得有问题造成的。
并不是因为%22变成了 %5c%22,而 %c0吃掉了后面的%5c。
而后面这种情况,在腾讯的相关站点暂时没有发现实际案例。