1、SQL,SQL注入是什麼
SQL是操做數據庫數據的結構化查詢語句,通常在網頁的應用數據和後臺數據庫中的數據進行交互式採用SQL。
SQL注入即在web應用程序對用戶輸入的數據的合法性沒有判斷或過濾不嚴而使得攻擊者能夠在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,在管理員不知情的狀況下實現非法操做,以此來實現欺騙數據庫服務器執行非受權的任意查詢,從而進一步獲得相應的數據信息。
SQL注入將web頁面的URL,輸入的數據包修改爲SQL語句,再傳給服務器,以此獲得數據庫信息。
php
2、注入原理
假設存在一條URL爲:HTTP://www.wonton.com/test.php?id=1
這時後臺數據庫的SQL語句多是Select \* from table where id=1
若是咱們在輸入框中加一個/,SQL語句變成Select \* from table where id=1/ 不符合語法,返回錯誤
但若是咱們輸入and 1 = 1,SQL語句變成Select \* from table where id=1 and 1 = 1 這樣邏輯永真,必定會返回正確。
3、注入過程
一、判斷是否有注入
(1)URL/ 報錯
(2)URLand 1 = 1 返回正常
(3)URLand 1 = 2 返回錯誤mysql
二、判斷服務器類型和數據庫類型
三、根據不一樣數據庫類型進行SQL注入攻擊
通常步驟爲查看數據庫版本,查看數據庫名稱,查看錶名,查看列名。
web
4、SQL注入分類
1.
* 數字型注入(輸入參數是數字)
後臺的查詢代碼爲select email from member where id=$id
變爲select email from member where id=1
* 字符型注入(輸入參數是字符)
後臺的查詢爲 select email from member where id='$id'
變爲select email from member where id='1'
2.按照數據庫分類
mysql注入;SQL server注入;Oracle注入;Access注入
3.基於報錯的SQL盲注;基於布爾SQL盲注;基於時間的SQL 盲注