sql注入攻擊原理及攻防 02

2021-04-14 15:53:53 字數 2280 閱讀 8917

二、區分資料庫伺服器型別

一般來說,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 資訊 當你告訴它 三國演義 時,它會查詢並告訴你書庫中 三國演義 的資訊 這裡的組合方式就是 書庫中 使用者輸入 的資訊 但是如果你告訴它 三國演義 或 所有書籍 它機械地聽從指令...