LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

关于在浏览器中执行*.exe文件的深入探讨

admin
2011年4月22日 14:43 本文热度 2655
关键词:ASP

一:真的能在浏览器中执行命令文件吗?
        答案是肯定的。(哇,酷耶!可以......)不过先别高兴,只能执行服务器端的,而且是必须经过授权的。否则服务器想黑你就太容易了。谁敢看我我就格式化谁。(真希望可以,老是黑客黑服务器,也该服务器黑别人了。哈哈!)

二:他是如何实现的。是靠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: "   --> )
你不会成功的,如果死机不要怨我。

该文章在 2011/4/22 14:43:15 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved