【web安全學習篇1】VBS腳本基礎編寫總結
發表時(shí)間:2020-10-19
發布人(rén):融晨科技
浏覽次數:72
【web安全學習篇1】VBS腳本基礎編寫總結
- VBS初始及變量
- 常量
- 注釋與數學運算
- 布爾類型
- if判斷
- select語句實現多條件循環
- 循環結構
- 循環嵌套
- 數組的(de)定義與應用
- 定義二維數組及應用
- 初識函數
- 子(zǐ)程序
- 用VBS腳本運行可執行文件
- 總結
引言:非科班出(chū)身,自學web滲透的(de)小白。初次寫博客,不(bù)到(dào)之(zhī)處還望多多包涵。學習是(shì)個(gè)漫長的(de)過程,而(ér)且經常産生疑惑,感覺學的(de)東西沒什麽實際意義,不(bù)知道(dào)怎麽用。個(gè)人(rén)也(yě)比較健忘,筆記一直胡亂地(dì / de)寫。看了(le/liǎo)不(bù)少博文,就(jiù)想着自己也(yě)寫一些。一來(lái)可以(yǐ)整理一下自己的(de)筆記,複習所學的(de)知識。再者就(jiù)是(shì)想跟這(zhè)裏的(de)學者交流一下,這(zhè)樣才有進步。筆記如若有不(bù)完整或者錯誤的(de)地(dì / de)方,歡迎大(dà)家在(zài)留言欄提出(chū)糾正。
VBS初始及變量
VBS是(shì)windows内置腳本,用記事本直接編輯,将文件後綴名改爲(wéi / wèi)“vbs”即可運行。
第一個(gè)腳本:
dim a
a="Hello,world!!"
msgbox a
其中“msgbox”如python的(de)“”print一樣是(shì)打印的(de)意思。
變量以(yǐ)dim命名,并且可以(yǐ)用“:”号在(zài)命名同時(shí)賦值。
如:dim a:4
我們可以(yǐ)用“inputbox”進行輸入,達到(dào)互動效果
dim name
name=inputbox("請輸入你的(de)名字。")
msgbox "你的(de)名字叫"&name
常量
常量用“const”命名,目的(de)是(shì)爲(wéi / wèi)了(le/liǎo)減少代碼量以(yǐ)及增加規範。
const a="nihao,china"
msgbox a
注釋與數學運算
- 在(zài)每句的(de)開頭寫入“rem"在(zài)或者"’"即可注釋掉整行。
如:
dim a,b
a=46
'a=15151
rem b=78
b=77
msgbox a,b
- 數學的(de)運算符大(dà)部分在(zài)腳本都能通用。
“*”表示乘法
“**”表示平方
“/”表示除法
“+”純數字表示加法,字符串表示拼接
a=12+5和(hé / huò)a=“12”+"5"意義是(shì)不(bù)一樣的(de)
布爾類型
true表示正确;false表示錯誤
如
dim a,b
a=15
b=12
msgbox a>b
輸出(chū)結果爲(wéi / wèi)true,可以(yǐ)用布爾類型判斷比較結果。
if判斷
常見的(de)if判斷語句:
if then……end if
if then……else…… end if
if then ……else if……else……end if end if
例子(zǐ)
1.
dim a,b,c,d
a=inputbox("請輸入a的(de)值:")
b=inputbox("請輸入b的(de)值:")
c=inputbox("請輸入c的(de)值:")
d=a*2+b*2
c=int(c)
if c=d then
msgbox "你是(shì)對的(de)!!!!"
else
msgbox "你是(shì)錯的(de)!!!"
end if
dim a
a=inputbox("請輸入一個(gè)大(dà)于(yú)50的(de)數字")
a=int(a)
if a>50 then
msgbox "正确"
else if a=50 then
msgbox "不(bù)要(yào / yāo)輸入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
有多少個(gè)“if”就(jiù)要(yào / yāo)有多少的(de)end if結尾!
select語句實現多條件循環
利用select case +變量實現。看個(gè)例子(zǐ)就(jiù)明白,跟DOS命令的(de)goto很像。
dim a
a=inputbox(“請輸入小于(yú)4的(de)數字”)
a=int(a)
select case a
case 1
msgbox "one"
case 2
msgbox "two"
case 3
msgbox "three"
case else
msgbox "你輸入的(de)數字不(bù)符合要(yào / yāo)求"
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 "你的(de)輸入次數有限,程序将關閉!!!"
exit do
else
ctr=ctr+1
msgbox"密碼出(chū)錯,請重新輸入"
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
腳本會逐一輸出(chū)結果。需要(yào / yāo)注意的(de)是(shì),兩個(gè)for循環,第一個(gè)每完成一次,第二個(gè)會完成全部。
數組的(de)定義與應用
數組由()定義,并且從0開始
如定義數組裏有十個(gè)元素,并對前三個(gè)元素進行賦值:
dim name(9)
name(0)=12
name(1)="mylove"
name(2)=5.26
msgbox name(2)
跟變量一樣,數組也(yě)可以(yǐ)同時(shí)被定義調用:
dim name(2),high(2),mark(2)
dim n
for n= 0 to 2
name(n)=inputbox("請輸入第"&n+1&"個(gè)學生的(de)名字")
high(n)=inputbox("請輸入第"&n+1&"個(gè)學生的(de)身高")
mark(n)=inputbox("請輸入第"&n+1&"個(gè)學生的(de)成績")
next
msgbox name(0)
msgbox high(1)
msgbox mark(2)
此時(shí)通過用戶輸入來(lái)實現數組賦值
定義二維數組及應用
二維是(shì)指行跟列
如 dim name(1,1)表示定義一個(gè)兩行兩列的(de)二維數組。第一個(gè)數字代表行數,第二個(gè)代表列數。
其實就(jiù)是(shì)個(gè)表格,可以(yǐ)用來(lái)收集用戶數據
如:
1.
dim name(2),high(2),mark(2)
dim n
for n= 0 to 2
name(n)=inputbox("請輸入第"&n+1&"個(gè)學生的(de)名字")
high(n)=inputbox("請輸入第"&n+1&"個(gè)學生的(de)身高")
mark(n)=inputbox("請輸入第"&n+1&"個(gè)學生的(de)成績")
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 &"個(gè)人(rén)的(de)"& opt)
next
for i=0 to 1
for j= 0 to 1
msgbox msg(i,j)
初識函數
- 與定義變量差不(bù)多,将dim替換成function,最後以(yǐ)end function結束函數的(de)定義。函數内可定義變量,實現更複雜的(de)運算。
如定義一個(gè)函數,需要(yào / yāo)用戶輸入名字并且打印一句話。
function fun(name)
name=inputbox("請輸入你的(de)名字")
msgbox "吃飯啦!!!!"&name
end function
call fun(name)
用call+函數名調用函數!
定義函數進行互動
dim num1,num2
num1=inputbox("請輸入第一個(gè)數字")
num2=inputbox("請輸入第二個(gè)數字")
num1=int(num1)
num2=int(num2)
function fun(num1,num2)
num=num1*num2
msgbox num
end function
call fun(num1,num2)
内建函數不(bù)需要(yào / yāo)定義,直接能調用。可以(yǐ)百度查找,有很多。
如:
dim a
a=now()/time()/date()
msgbox a
子(zǐ)程序
子(zǐ)程序跟函數差不(bù)多,定義時(shí)将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"
這(zhè)裏的(de)ws.run可換成ws.exec,文件路徑最好是(shì)絕對路徑,就(jiù)是(shì)從盤符到(dào)文件名都要(yào / yāo)寫清楚。
當然也(yě)可以(yǐ)不(bù)用絕對路徑,前提是(shì)你要(yào / yāo)打開的(de)文件路徑可以(yǐ)在(zài)腳本執行路徑後面追加。
- 打開記事本:
set ws=wscript.createobject("wscript.shell")
ws.run"notepad.exe"
總結
多敲代碼,多練練。其實就(jiù)入門而(ér)言,我發現很多編程語言都有許多相似之(zhī)處。如python,php,JavaScript等,入門學的(de)内容其實差不(bù)多。要(yào / yāo)注意分号,冒号,花括号等等符号的(de)使用,熟練日常類和(hé / huò)函數的(de)使用。代碼敲多了(le/liǎo),就(jiù)會有一種觸類旁通的(de)快感。