1. 程式人生 > >sql注入與sqlmap的使用

sql注入與sqlmap的使用

一.sql注入產生的原因

sql注入用一句概況就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。 通過控制部分SQL語句,攻擊者可以查詢資料庫中任何自己需要的資料,利用資料庫的一些特性,可以直接獲取資料庫伺服器的系統許可權。

要利用sql注入必須要滿足兩個必要的條件:

1)使用者能夠控制資料的輸入

2)原本要執行的程式碼,拼接了使用者的輸入

正是由於這種拼接,導致了程式碼的注入。對於一個web請求來說,sql注入可能存在的URL引數,cookie,POST資料,以及HTTP訊息頭等。

二. 漏洞分類

根據是否回顯可以分為:顯示注入,盲注

根據注入型別分為: 字元型,數字型

三.檢測是否存在sql注入

1.注入字串數字型別時

1)提交一個單引號看是否會引發與正常響應不同或者報錯

2)如果有錯誤,輸入兩個單引號,把後面的單引號進行轉義,看錯誤是否消失,消失中則表明可能存在sql注入

3)進一步確定漏洞是否存在,構造”良性“輸入

oracle:'||'foo
ms-sql:'+'foo
mysql:' 'foo

2.注入型別為數字

1)嘗試輸入一個結果等於原始數字值的簡單數學表示式,例如1+1,如果做出相同的響應,則表明它易於受到攻擊(前提是改變數字會對響應有較大的改變)

2)如果第一個測試成功,可以用更復雜的方式:67-ASCII('A')或者51-ASCII(1)

3.時間延遲判斷

主要是構造語句達到時間延遲的目的。

常用的語句:

UserName=fff';waitfor%20delay%20'0:0:10'%20--%