此為轉貼資料
關於在瀏覽器中執行*.exe文件的深入探討!
一:真的能在瀏覽器中執行命令文件嗎?
答案是肯定的。(哇,酷耶!可以......)不過先別高興,只能執行伺服器端的,而且是必須經過授權的。否則伺服器想黑你就太容易了。誰敢看我我就格式化誰。(真希望可以,老是黑客黑伺服器,也該伺服器黑別人了。哈哈!)
二:他是如何實現的。是靠asp文件嗎?
在伺服器端執行文件是靠SSI來實現的,SSI時伺服器端包含的意思(不是SSL),我們經常使用的#include 就是伺服器端包含的指令之一。不過,這次要介紹的就是---------#exec。就是他可以實現伺服器端執行指令。
不過,這次他不能用於.asp的文件。而只能用.stm、.shtm 和 .shtml這些副檔名。(很熟悉吧)而能解釋執行他們的就是Ssinc.dll。所以,你寫好的代碼必須保存成.stm等格式才能確保伺服器能執行。
三:如何執行呢?
終於開始討論實質性問題了。
它的語法是:《!-- #exec CommandType = CommandDescription --》
CommandType是參數,他有兩個可選類型:
1.CGI 運行一個應用程式。如 CGI 腳本、ASP 或 ISAPI 應用程式。
CommandDescription 參數是一個字串。此字串包含應用程式的虛擬路徑, 後跟一個問號以及傳送給應用程式的任一參數,參數之間由加號分隔 (+)。
他可是#exec命令最有用的參數,也是#exec命令存在的大部分理由。他可以處理已授權的CGI腳本,或Isapi應用程式。微軟?了向下相容一些早期的ISAPI應用程式,而創建了該項命令。我們知道,微軟早期的WEB應用程式都是靠ISAPI解釋的,而且也相容CGI程式。你現在也可以在你的WEB根目錄中找到CGI-BIN的目錄。
我們可以用一下例子說明。
《!-- #exec cgi="/CGI-BIN/chat.exe?user+passw" --》
這種命令我們在一些UNIX主機上可以經常見到。現在,我們也可以在自己的.shtml中運用他了。當然,如果伺服器允許的話。
還有一種類型的程式:
《!-- #exec cgi="/CGI-BIN/login.dll?name" --》
這種命令方式將?動一個進程外的程式來解釋並動態輸出資訊到網頁上。這種方式不常見。但你仍然可以在一些網站中見到。
2.CMD參數。
他可是#exec命令中最可怕的參數,也是#exec命令禁止使用的大部分理由。他也是我們一些網友實現最終幻想的利器。可惜。要得到我們幻想的招數有些困難(如de...,fo....)。也幾乎是不可能的。
一下是微軟關於CMD參數的說明,你一定要讀明白在試!
CMD 運行 shell 命令。 CommandDescription 參數是一個字串,其中包含 shell 命令程式的完整物理路徑,後跟由空格分隔的任何命令行參數。如果沒有指定全路經, Web 伺服器將搜索系統路徑。默認情況下,該指令是被禁用的,這是因?它會對 Web 站點造成安全方面的危險;例如,用戶可能使用 format 命令格式化您的硬碟。
我本人建議關閉,因?現在微軟也不推薦用這個命令。
不過,如果你是伺服器的管理員,可以試一試。
你可以新建一個test.shtml的文件。
然後在首行設置一個命令。
《!--#exec cmd="c:/winnt/system32/help.exe" --》 'NT中的一個幫助文件(沒有危險)。
或試一試!
《!--#exec cmd="c:/windows/command/mem.exe" --》 'window98下的顯示記憶體的一個命令。(沒有危險)
然後你在該虛擬目錄中將其許可權設?腳本,或可執行。
最後,你可以在瀏覽器中輸入該地址http://localhost/xxx/test.shtml
如果你看到瀏覽器中顯示了他們的螢幕輸入資訊。那?,恭喜你。你試成功了。
四:最終幻想!(最好不要試。如果出了問題與本人無關!本人也不解答相應的問題)
如果我們想執行多的命令呢?那?閉上眼,往下看吧
首先,你打開註冊表編輯器(記住要先備份),然後找
KEY_LOCAL_MACHINE/SYSTEM
/CurrentControlSet
/Services
/W3SVC4 '也可能是w3svc
/Parameters
選擇新建一個Dword值
SSIEnableCmdDirective
它的兩個值?0,1。下面是微軟的說明。
伺服器端的 #exec cmd 命令包括可執行外殼命令。安全意識強的站點希望通過將此值設置? 0 來關閉 #exec cmd 命令,並以此作?外加的安全防範,尤其是在允許不受信任的使用者將文件放置到伺服器時更是如此。默認狀態下,註冊表中不存在此值;要允許該命令執行外殼命令,必須先創建此值並將值設置? 1 。
還可以在添一個Dwordd值
AllowSpecialCharsInShell
它的兩個值?0,1。下面是微軟的說明。
範圍: 0, 1
預設值: 0 (禁用)
本值控制在運行批次檔案( .bat 和 .cmd 文件)時,是否允許在命令行使用 [ | ( , ; % 《 》 ] 等 Cmd.exe 特殊字元。這些特殊字元可能引發嚴重的安全隱患。 如果該項值設置? 1,心懷叵測的用戶可以在伺服器上隨意執行命令。因此,強力推薦用戶保留其默認設置 0。默認情況下,這些特殊字元不能傳遞到腳本映射 CGI 程式。如果設置? 1,除了管道符號 | 和標準 I/O 重定向符(《 和 》)之外(這兩類字元在命令處理器中具有特殊含義),這些特殊字元都能夠傳遞到腳本映射 CGI 程式。
哈哈,下面我就不詳述了。
不過你要執行一些你希望的命令可不是這?簡單
(如:《!--#exec cmd="c:/winnt/system32/format.com /y a:" --》)
你不會成功的,如果死機不要怨我。