條件:sql
當一個頁面,存在注入,沒顯示位,沒有數據庫出錯信息,只能經過頁面返回正常不正常進行判斷進行sql注入。數據庫
瞭解的函數函數
exists()
用於檢查 子查詢是否有返回數據。 結果是 ture或者false
ascii()
把字符轉化成ascii碼
substr()
substr(string string,num start,num length);
偏移從1開始的 並非0;
select ascii(substr((select user()),1,1));
步驟
(1) 看是否有注入點,判斷 整型仍是字符串
(2)判斷查找的數據庫的長度
(3) 根據ascii()函數 得出庫名
(4) 查找庫,判斷庫的長度 , 根據ascii() 得出表名
(5) 判斷表名的長度,根據ascii() 得出列名
1.找注入點
2.一次判斷數據庫的版本號
select ascii(substr((select database()),1,1))
?id=1'
and (select ascii(substr((select database()),1,1)) >115)
--+
3.判斷查找的數據庫的長度
4. 獲得表名


最終依次猜的表名爲users
5. 獲得列名



同理最終獲得第2列列名爲username,第3列列名爲password
5. 獲得列值






依次獲得爲admin4,同理可得其餘數據