這個組件在xp、2003上默認都可以用的,調用后可以聽到電腦上一個國外老男人在說話。好比這樣一句代碼:●CreateObject("SAPI.SpVoice").Speak "I LOVE YOU"●,保存成vbs后綴后雙擊就會聽到英語的我愛你了。但隨之而來我們講到另一個問題,不保存成vbs或vbe后綴如何運行vbs代碼。
一、用mshta來運行vbs hta這種類型的文件運行后也是系統權限,其調用宿主就是mshta.exe。我們在cmd下運行這樣一行代碼:●mshta vbscript:createobject("sapi.spvoice").speak("I LOVE YOU.")(window.close)●,也會聽到同樣的發音。這行代碼的意思類似是臨時生成一個hta文件,然后運行里邊的vbs代碼,再調用window.close將運行窗口關掉。整個運行過程是看不到hta窗口的。這種運行方式你會想到什么?最少我是想到了兩個。一個是批處理的隱藏運行,基本代碼如下: ★ @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin rem 下邊開始寫批處代碼了 net user lcx 12345 /add ★ 這個代碼只能雙擊運行,運行過程中你看不到具體的批處理運行流程的。第二個我想的是注射過程中的用途。網上有篇流傳很廣的文章《mssql注射中多次調用參數導致多次echo的解決方法》,中心思想是將vbs語句用冒號連接起來然后用echo命令一次寫入到被注入的肉雞上,然后再調用這個vbs來下載文件。如果調用mshta執行的話,下載、執行一次就ok了。不過在命令行下用mshta后邊直接跟vbs代碼有個難處理的問題是空格,不過這個好解決用execute將vbs代碼放在括號里就ok了,這個讀者可以親自去試一下了,相信我不難的。