【web安全学习篇1】VBS脚本基础编写总结
引言:非科班出身,自学web渗透的小白。初次写博客,不到之处还望多多包涵。学习是个漫长的过程,而且经常产生疑惑,感觉学的东西没什么实际意义,不知道怎么用。个人也比较健忘,笔记一直胡乱地写。看了不少博文,就想着自己也写一些。一来可以整理一下自己的笔记,复习所学的知识。再者就是想跟这里的学者交流一下,这样才有进步。笔记如若有不完整或者错误的地方,欢迎大家在留言栏提出纠正。
VBS初始及变量
VBS是windows内置脚本,用记事本直接编辑,将文件后缀名改为“vbs”即可运行。
第一个脚本:
dim a
a="Hello,world!!"
msgbox a
其中“msgbox”如python的“”print一样是打印的意思。
变量以dim命名,并且可以用“:”号在命名同时赋值。
如:dim a:4
我们可以用“inputbox”进行输入,达到互动效果
dim name
name=inputbox("请输入你的名字。")
msgbox "你的名字叫"&name
常量
常量用“const”命名,目的是为了减少代码量以及增加规范。
const a="nihao,china"
msgbox a
注释与数学运算
- 在每句的开头写入“rem"在或者"’"即可注释掉整行。
如:
dim a,b
a=46
'a=15151
rem b=78
b=77
msgbox a,b
- 数学的运算符大部分在脚本都能通用。
“*”表示乘法
“**”表示平方
“/”表示除法
“+”纯数字表示加法,字符串表示拼接
a=12+5和a=“12”+"5"意义是不一样的
布尔类型
true表示正确;false表示错误
如
dim a,b
a=15
b=12
msgbox a>b
输出结果为true,可以用布尔类型判断比较结果。
if判断
常见的if判断语句:
if then……end if
if then……else…… end if
if then ……else if……else……end if end if
例子
1.
dim a,b,c,d
a=inputbox("请输入a的值:")
b=inputbox("请输入b的值:")
c=inputbox("请输入c的值:")
d=a*2+b*2
c=int(c)
if c=d then
msgbox "你是对的!!!!"
else
msgbox "你是错的!!!"
end if
dim a
a=inputbox("请输入一个大于50的数字")
a=int(a)
if a>50 then
msgbox "正确"
else if a=50 then
msgbox "不要输入50!!!!"
else
msgbox "错误"
end if
end if
dim num:num=0
for i=0 to 9
num=num+1
if num=5 then
exit for
end if
next
msgbox num
有多少个“if”就要有多少的end if结尾!
select语句实现多条件循环
利用select case +变量实现。看个例子就明白,跟DOS命令的goto很像。
dim a
a=inputbox(“请输入小于4的数字”)
a=int(a)
select case a
case 1
msgbox "one"
case 2
msgbox "two"
case 3
msgbox "three"
case else
msgbox "你输入的数字不符合要求"
end select
循环结构
- do循环
利用do……exit do……loop循环实现
dim password,ctr
ctr=0
const pass ="123456"
do
password=inputbox("请输入密码:")
if password=pass then
msgbox "密码输入成功!"
exit do
else
if ctr=3 then
msgbox "你的输入次数有限,程序将关闭!!!"
exit do
else
ctr=ctr+1
msgbox"密码出错,请重新输入"
end if
end if
loop
- for循环
dim count
for count=0 to 10
msgbox count
next
循环嵌套
- do循环嵌套while条件语句
dim count
count =0
do while count<11
msgbox count
count=count+1
loop
- for循环嵌套if条件语句
dim num:num=0
for i=0 to 9
num=num+1
if num=5 then
exit for
end if
next
msgbox num
- 双for嵌套循环
dim i,j,k
for i=1 to 9
for j=1 to 9
k=i*j
msgbox k
next
next
脚本会逐一输出结果。需要注意的是,两个for循环,第一个每完成一次,第二个会完成全部。
数组的定义与应用
数组由()定义,并且从0开始
如定义数组里有十个元素,并对前三个元素进行赋值:
dim name(9)
name(0)=12
name(1)="mylove"
name(2)=5.26
msgbox name(2)
跟变量一样,数组也可以同时被定义调用:
dim name(2),high(2),mark(2)
dim n
for n= 0 to 2
name(n)=inputbox("请输入第"&n+1&"个学生的名字")
high(n)=inputbox("请输入第"&n+1&"个学生的身高")
mark(n)=inputbox("请输入第"&n+1&"个学生的成绩")
next
msgbox name(0)
msgbox high(1)
msgbox mark(2)
此时通过用户输入来实现数组赋值
定义二维数组及应用
二维是指行跟列
如 dim name(1,1)表示定义一个两行两列的二维数组。第一个数字代表行数,第二个代表列数。
其实就是个表格,可以用来收集用户数据
如:
1.
dim name(2),high(2),mark(2)
dim n
for n= 0 to 2
name(n)=inputbox("请输入第"&n+1&"个学生的名字")
high(n)=inputbox("请输入第"&n+1&"个学生的身高")
mark(n)=inputbox("请输入第"&n+1&"个学生的成绩")
next
msgbox name(0)
msgbox high(1)
msgbox mark(2)
dim msg(1,1)
dim i,j
for i=0 to 1
for j=0 to 1
dim opt
select case 1
case 0
opt="name"
case 1
opt ="age"
end select
msg(i,j)=inputbox("请输入第"& i+1 &"个人的"& opt)
next
for i=0 to 1
for j= 0 to 1
msgbox msg(i,j)
初识函数
- 与定义变量差不多,将dim替换成function,最后以end function结束函数的定义。函数内可定义变量,实现更复杂的运算。
如定义一个函数,需要用户输入名字并且打印一句话。
function fun(name)
name=inputbox("请输入你的名字")
msgbox "吃饭啦!!!!"&name
end function
call fun(name)
用call+函数名调用函数!
定义函数进行互动
dim num1,num2
num1=inputbox("请输入第一个数字")
num2=inputbox("请输入第二个数字")
num1=int(num1)
num2=int(num2)
function fun(num1,num2)
num=num1*num2
msgbox num
end function
call fun(num1,num2)
内建函数不需要定义,直接能调用。可以百度查找,有很多。
如:
dim a
a=now()/time()/date()
msgbox a
子程序
子程序跟函数差不多,定义时将function换成sub。
如:
sub msg(name,age)
msgbox "hello,word"&name
end sub
call msg("xiaohua",14)
return msg("xioahua",14)
用VBS脚本运行可执行文件
- 打开cmd:
set ws=wscript.createobject("wscript.shell")
ws.run"C:\Windows\System32\cmd.exe"
这里的ws.run可换成ws.exec,文件路径最好是绝对路径,就是从盘符到文件名都要写清楚。
当然也可以不用绝对路径,前提是你要打开的文件路径可以在脚本执行路径后面追加。
- 打开记事本:
set ws=wscript.createobject("wscript.shell")
ws.run"notepad.exe"
总结
多敲代码,多练练。其实就入门而言,我发现很多编程语言都有许多相似之处。如python,php,JavaScript等,入门学的内容其实差不多。要注意分号,冒号,花括号等等符号的使用,熟练日常类和函数的使用。代码敲多了,就会有一种触类旁通的快感。
来源:oschina
链接:https://my.oschina.net/u/4411210/blog/4681003