條件:
當一個頁面,存在注入,沒顯示位,沒有數據庫出錯信息,只能通過頁面返回正常不正常進行判斷進行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,同理可得其他數據