上網搜了一下什么是延時注入,所謂延時注入主要針對頁面無變化,無法用布爾真假判斷,無法報錯的情況下注入。
學習延時注入,首先要知道這幾個函數。
sleep() //延時
if(condition,ture,fales) //條件語句
ascii() //轉換成ascii
substring() substring("string",strart,length) //mid()也一樣從哪開始取幾位
例如:
if(ascii(subtring("hello",1,1))=104,sleep(5),1)
可以看到,取出"hello"里的第一個字符串,也就是"h",判斷他的ascii碼是否為104("h"的ascii碼為104),如果是則延時5秒,反之不延時。
同樣,我們可以在substring函數里面寫SQL語句,提取出我們所要查的表名、列名,再用延時猜解出來。
例如:
if(ascii(substring((SELECT distinct concat(table_name) FROM information_schema.tables where table_schema=database() LIMIT 0,1),1,1))=116,sleep(5),1);
同樣的,我們可以嵌入SQL語句帶入查詢,配合以上函數即可猜出表名第一個字母的ascii碼為117,即"u"。
猜解列名也是差不多的用法。
