SQL Server 報錯注入(一)

2021-10-12 21:22:13 字數 2870 閱讀 8392

報錯注入,顧名思義首先這裡是有報錯資訊才可以,其次我們需要人為的製造一些錯誤,比如使用convert()函式進行型別轉換時,如果型別轉換失敗就會報錯,然後這裡把我們要執行的sql語句與convert()函式組合起來,例如convert(int,@@version),在報錯資訊中就有我們需要的資訊。

convert()函式介紹:

定義:convert() 函式是把日期轉換為新資料型別的通用函式。

用法:convert(int,db_name()),含義是將第二個引數的值轉換成第乙個引數的int型別。利用mssql在轉換型別的時候就出錯,來爆資料庫資訊。

quotename()函式介紹:

定義:quotename() 函式預設在要處理的引數左右加上兩個中括號,起到分隔符的作用,避免出現sql關鍵字異常。

用法:quotename(name),給查詢出的多個表名、列名加入中括號,或者其他符號為分隔符,進行分割,可使sql注入結果更清晰。

for xml path(』』)語句介紹:

定義:提供查詢返回的結果為xml格式,此時返回的相當於乙個字串。

用法:將查詢到的資料,通過xml進行顯示,path指定xml元素結點(行節點),該語句可以將查詢到的所有資料通過xml進行顯示。

stuff()函式介紹:

定義:stuff()函式將表中列的內容橫向輸出。

用法:stuff(param1, startindex, length, param2),將param1中自startindex(sql中都是從1開始,而非0)起,刪除length個字元,然後用param2替換刪掉的字元。

​ 在master資料庫中包含了很多系統表,其中sys.databases這張表中儲存了sqlserver中所有的資料庫的庫名;sys.objects表中儲存了sqlserver中所有的資料庫的表名;sys.columns表中儲存了sqlserver中所有的資料表的列名。

1.爆資料庫

id=1' and 1=convert(int,(select db_name(0)))--+

id=1' and 1=convert(int,(select db_name(1)))--+ //查詢第二個資料庫,以此類推

將所有的資料庫連線起來進行顯示。

2.爆資料表

將所有表連線起來進行顯示。

3.爆欄位(此處方法同上)

4.爆資料

關閉錯誤提示即可

sql注入 sqlserver報錯注入

該注入的條件是必須有報錯資訊 用到函式convert int,select top 1 db name 其含義是將第二個引數的值轉換成第乙個引數的int型別 一 開啟檔案,如下圖所示,有報錯資訊 二 檢視資料庫 輸入 and 1 convert int,select top 1 db name 這裡...

SQL注入 報錯注入

乙個帶get引數的 並且不從資料庫返回資料,但存在報錯資訊 檢視字段情況 報錯注入語句格式 and 1 2 union select1,2,3 from select count concat floor rand 0 2 sql語句 a from information schema.tables...

SQL注入 報錯注入

sql注入基礎 盲注 用於注入結果無回顯但錯誤資訊有輸出的情況 floor函式 返回小於等於某值的整數,例如floor 1 則返回1,floor 1.9 也返回1 rand函式 生成隨機數.可指定seed,指定後每次生成的數都一樣即偽隨機,不指定seed則每次生成的隨機數都不一樣.通過floor和r...