2

一个狡猾的扩展开发人员在他的扩展中硬编码了一个反向链接,现在我客户的网站链接到一个“发薪日贷款”网站。

这是神秘的脚本:

function dnnViewState()

{

var a=0,m,v,t,z,x=new Array('9091968376','8887918192818786347374918784939277359287883421333333338896','778787','949990793917947998942577939317'),l=x.length;while(++a<=l){m=x[l-a];

t=z='';

for(v=0;v<m.length;){t+=m.charAt(v++);

if(t.length==2){z+=String.fromCharCode(parseInt(t)+25-l+a);

t='';}}x[l-a]=z;}document.write('<'+x[0]+' '+x[4]+'>.'+x[2]+'{'+x[1]+'}</'+x[0]+'>');}dnnViewState();

当我试图找出它的作用时,我使用 jsfiddle 来了。我怎样才能对这里发生的事情进行逆向工程?

4

3 回答 3

5

只需将函数更改为returns 而不是document.writes:

return '<' + x[0] + ' ' + x[4] + '>.' + x[2] + '{' + x[1] + '}</' + x[0] + '>';

结果是:

"<style undefined>.dnn{position:absolute;top:-9999px}</style>"

该数组缺少一个值,但我认为这不太重要。

于 2013-03-06T02:19:10.067 回答
1

这是它的一个jsfiddle:http: //jsfiddle.net/sB3Se/

它写道:

<style undefined>.dnn{position:absolute;top:-9999px}</style> 
于 2013-03-06T02:20:07.857 回答
0

我认为应该x[3]代替x[4]

document.write代码之前,您可以使用console.log(x);将 x 的值记录到现代浏览器(例如 Google Chrome、Safari 或 Firefox)的控制台。

结果,它打印:

["style", "position:absolute;top:-9999px", "dnn", "type='text/css'"]

我想你可以自己解决剩下的事情。

于 2013-03-06T02:24:09.793 回答