二、區分資料庫伺服器型別
一般來說,access與sql-server是最常用的資料庫伺服器,儘管它們都支援t-sql標準,但還有不同之處,而且不同的資料庫有不同的攻擊方法,必須要區別對待。
1、 利用資料庫服2、 務器的系統變數進行區分
sql-server有user,db_name()等系統變數,利用這些系統值不僅可以判斷sql-server,而且還可以得到大量有用資訊。如:
1 http://***.***.***/abc.asp?p=yy and user>0 不2 僅可以判斷是否是sql-server,而3 還可以得到當前連線到資料庫的使用者名稱4
②http://***.***.***/abc.asp?p=yy and db_name()>0 不僅可以判斷是否是sql-server,而還可以得到當前正在使用的資料庫名;
2、利用系統表
access的系統表是msysobjects,且在web環境下沒有訪問許可權,而sql-server的系統表是sysobjects,在web環境下有訪問許可權。對於以下兩條語句:
若資料庫是sql-serve,則第一條,abc.asp一定執行正常,第二條則異常;若是access則兩條都會異常。
3、 mssql三個關鍵系統表
sysdatabases系統表:microsoft sql server 上的每個資料庫在表中佔一行。最初安裝 sql server 時,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 資料庫的項。該錶只儲存在 master 資料庫中。 這個表儲存在master資料庫中,這個表中儲存的是什麼資訊呢?這個非常重要。他是 儲存了所有的庫名,以及庫的id和一些相關資訊。
這裡我把對於我們有用的欄位名稱和相關說明給大家列出來。name //表示庫的名字。
dbid //表示庫的id,dbid從1到5是系統的。分別是:master、model、msdb、mssqlweb、tempdb 這五個庫。用select * from master.dbo.sysdatabases 就可以查詢出所有的庫名。
sysobjects:sql-server的每個資料庫內都有此系統表,它存放該資料庫內建立的所有物件,如約束、預設值、日誌、規則、儲存過程等,每個物件在表中佔一行。以下是此系統表的欄位名稱和相關說明。
name,id,xtype,uid,status:分別是物件名,物件id,物件型別,所有者物件的使用者id,物件狀態。
物件型別(xtype)。可以是下列物件型別中的一種:
c = check 約束
d = 預設值或 default 約束
f = foreign key 約束
l = 日誌
fn = 標量函式
if = 內嵌表函式
p = 儲存過程
pk = primary key 約束(型別是 k)
rf = 複製篩選儲存過程
s = 系統表
tf = 表函式
tr = 觸發器
u = 使用者表
uq = unique 約束(型別是 k)
v = 檢視
x = 擴充套件儲存過程
當xtype='u' and status>0代表是使用者建立的表,物件名就是表名,物件id就是表的id值。
用: select * from chouyfd.dbo.sysobjects where xtype='u' and status>0 就可以列出庫chouyfd中所有的使用者建立的表名。
syscolumns :每個表和檢視中的每列在表中佔一行,儲存過程中的每個引數在表中也佔一行。該錶位於每個資料庫中。主要欄位有:
name ,id, colid :分別是欄位名稱,表id號,欄位id號,其中的 id 是 剛上我們用sysobjects得到的表的id號。
用: select * from chouyfd.dbo.syscolumns where id=123456789 得到chouyfd這個庫中,表的id是123456789中的所有字段列表。
三、確定xp_cmdshell可執**況
若當前連線資料的帳號具有sa許可權,且master.dbo.xp_cmdshell擴充套件儲存過程(呼叫此儲存過程可以直接使用作業系統的shell)能夠正確執行,則整個計算機可以通過以下幾種方法完全控制,以後的所有步驟都可以省
sql注入攻擊
使用者可以利用向php表單輸入的資料完成對mysql的注入攻擊。例如我的查詢是 insert table into xx values 使用者名稱 號碼 檔案 0 在使用者輸入時最後一位只能是0.使用者不需要輸入 這時使用者在號碼處輸入 10000 x.gif.1 雙連字元後加乙個空格是sql的注釋...
sql注入攻擊
簡單判斷是否有漏 www.abc.asp?id 1,www.abc.asp?id 1 and 1 1 kali 檢視所有的資料庫 sqlmap u www.abc.asp?id 1 dbs current user 是否有漏洞會有相應資訊 檢視所有的表 sqlmap u www.abc.asp?id...
sql注入原理及實驗
原理 可以將web程式想象成乙個圖書館管理員,它機械的聽從使用者告訴它的資訊,在書庫 sql程式 中查詢 select 資訊 當你告訴它 三國演義 時,它會查詢並告訴你書庫中 三國演義 的資訊 這裡的組合方式就是 書庫中 使用者輸入 的資訊 但是如果你告訴它 三國演義 或 所有書籍 它機械地聽從指令...