SQL注入学习记录 CTFHub SQL注入 布尔盲注

一、布尔盲注

可以进行SQL注入,但是不能通过SQL注入漏洞看到数据库中的信息,但是可以通过回显的真假判断数据库中的信息。
用到的函数:

Length()函数 返回字符串的长度
Substr()截取字符串,有三个参数,第一个是要截取的字符串,第二个是从第几个字符开始,第三个是一次截取多少个字符

二、做题

打开后还是熟悉的界面:
SQL注入学习记录 CTFHub SQL注入 布尔盲注_第1张图片
我们先输入1
在这里插入图片描述
只是返回了一个query_success,没有回显其他内容。输入1'则返回了query_success。
于是我们只能一个一个猜他的名称。
我们可以通过length()函数来猜每个名称的长度,例如1 and length(database())>=4,返回了:
在这里插入图片描述
1 and length(database())>=5则返回了:
在这里插入图片描述
证明当前使用数据库的名称长度为4,于是可以利用burpsuite来进行爆破猜出他的名称,先输入1 and substr(database(),1,1)='a',使用burpsuite抓包,然后将substr()的第二个参数和后面的a选中,添加负载:
SQL注入学习记录 CTFHub SQL注入 布尔盲注_第2张图片
爆破得到:
在这里插入图片描述
拿到数据库名称’sqli’。
接着输入1 and substr((select table_name from information_schema.tables where table_schema='sqli' limit 0,1),1,1)='a',还是burpsuite抓包,
SQL注入学习记录 CTFHub SQL注入 布尔盲注_第3张图片SQL注入学习记录 CTFHub SQL注入 布尔盲注_第4张图片
拿到第一个表名news,将limit第一个参数改为1,如法炮制得到第二个表名flag,显然flag就在这个表中。
然后输入1 and substr((select column_name from information_schema.columns where table_name='flag' limit 0,1),1,1)='a',burpsuite抓包:
SQL注入学习记录 CTFHub SQL注入 布尔盲注_第5张图片
SQL注入学习记录 CTFHub SQL注入 布尔盲注_第6张图片
拿到flag表中的字段名flag。
之后这步我依旧是用burpsuite抓包爆破,输入1 and substr((select flag from flag),1,1)='a',但是flag足足40+位,爆破得到:
SQL注入学习记录 CTFHub SQL注入 布尔盲注_第7张图片在这里插入图片描述
这么长,还是乱序的,眼睛都看花了。
后来在网上搜了一下其他人做的步骤,发现他们都是用的python爆破(留下菜鸡的眼泪),多学习吧!

你可能感兴趣的:(CTF学习)