盲注, 即在SQL 注入過程當中, SQL 語句執行選擇後, 選擇的數據不能回顯到前端, 須要使用特殊的方法進行判斷或嘗試, 這個過程稱爲盲注。前端
基於布爾型SQL 盲汁即在SQL 注入過程當中, 應用程序僅僅返回True( 頁面) 和False( 頁面) 。沒法根據應用程序的返回頁面獲得須要的數據庫信息。可是能夠經過構造邏輯判斷( 比較大小) 來獲得須要的信息。web
注入SQL 代碼以後, 存在如下兩種狀況:數據庫
產生一個疑問:注入的SQL 代碼到底被後臺數據庫執行了沒有? 即Web 應用程序是否存在SQL 注入?
面對這種狀況,以前講的基於布爾的SQL 盲注就很難發揮做用了( 由於基於布爾的SQL 前提是Web 程序返回的頁面存在true 和false 兩種不一樣的頁面)。這時, 通常採用基於web 應用響應時間上的差別來判斷是否存在SQL 注入, 即基於時間型SQL 盲注。安全
count(columu_name)函數
函數返回指定列的值的數目(NULL 不計入)
語法示例:
Select count (user) from users; // 返回表中user列的記錄數
select count(*) from users; // 返回表中的記錄數
示例如圖所示:
函數
Limit(m,n) 函數
說明:m 表明從m+1 條記錄行開始檢索,n 表明取出n 條數據。( m 可設爲0 )
語法示例:
select * from 表名 limit m,n;
select user from users limit 0,1; // 檢索記錄行1
示例如圖所示:網站
length() 函數
length() 函數返回文本字段中值的長度。
語法示例:
select length(user) from users;
示例如圖所示:
設計
字符串截取函數有幾個相似函數,mid(), substr() ,substring()和left() , 其中前三個函數用法基本一致
mid (string,start,length) 函數
其中,每一個參數的含義以下:orm
substring(string,start,length) 和substr(string, start, length)
函數實現的功能是同樣的, 均爲截取字符串。
其中,每一個參數的含義以下:blog
語法示例:ci
left (string,length) 函數
截取指定長度的字符串
其中, 每一個參數的含義以下:
Ascil() 函數
將字符轉化爲ascii 碼。若是是字符串, 則返回的最左字符的數值。也就是第一個字符的ascii 值。若是字符串爲空字符串,則返回NULL 。若是字符串爲NULL, ASCII() 返回數值是從0 到255 隨機。
語法示例
select ascii(substr(user,1,1)) from users limit 0,1;
示例如圖所示
基於布爾型SQL盲注即在SQL 注入過程當中,應用程序僅僅返回True(頁面)和FaIse(頁面)。 但不會回顯程序返回信息。對於布爾型盲注能夠經過構造邏輯判斷( 比較大小) 來獲得數據庫內容信息。
盲注的步驟與注入語句:( 注入須要在注入點拼接注入語句,實現邏輯判斷)
1 、判斷當前數據庫名長度與數據庫名
2 、判斷數據庫的表長度與表名
3 、判斷數據庫的字段名長度與字段名稱
4 、判斷字段的內容長度與內容字符串