目录

一、什么是盲注

二、盲注的分类

三、利用盲注的前提条件

四、盲注的优缺点

五、基于布尔类型的盲注

1.什么情况下使用布尔类型的盲注

2.使用布尔类型盲注的操作步骤:

3.布尔类型盲注的操作过程(以获取当前数据库为例)

4.使用其他函数进行布尔类型的盲注(演示获取当前数据库)

4.1  left()函数:

4.2 mid()函数:

4.3 正则表达式 regexp :

4.4 like函数:

4.5 if语句 :

六、基于时间类型的盲注

1.何时利用时间类型的盲注:

2.时间类型盲注的注意事项

3.基于时间盲注的演示


一、什么是盲注

盲注就是在sql注入过程中,sql语句执行select之后,可能由于网站代码的限制或者apache等解析器配置了不回显数据,造成在select数据之后不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个判断的过程称之为盲注。

通俗的讲就是在前端页面没有显示位,不能返回sql语句执行错误的信息,输入正确和错误返回的信息都是一致的,这时候我们就需要使用页面的正常与不正常显示来进行sql注入。

二、盲注的分类

  • 基于布尔类型的盲注
  • 基于时间类型的盲注

三、利用盲注的前提条件

首先页面没有显示位(如果有显示位可以选择union联合查询),并且没有返回sql语句的执行错误信息。

四、盲注的优缺点

优点:不需要显示位和出错信息。

缺点:速度慢,耗费时间长(可以用到bp等工具)。

五、基于布尔类型的盲注

1.什么情况下使用布尔类型的盲注

  • 没有返回SQL执行的错误信息
  • 错误与正确的输入,返回的结果只有两种

错误页面:

正确页面:

2.使用布尔类型盲注的操作步骤:

  1. 构造目标查询语句
  2. 选择拼接方式
  3. 构造判断表达式
  4. 提取数据长度
  5. 提取数据内容

3.布尔类型盲注的操作过程(以获取当前数据库为例)

在SQL注入过程中,由于没有显示位于报错信息,所以会用到截取字符串函数进行数据的提取,所往往需要一个一个字符去猜。

第一步:获取当前数据库的长度

payload为:lili' and length((select database()))=7--+

查看返回结果(需要自己试,也可以是用bp工具,也可以使用“>”,“<”符号):

当输入其他数字时,查看返回结果:

第二步:获取当前数据库库名(获取前三个字符,数据量太大,需要用到bp工具)

开启burp suite

payload为:lili' and substr((select database()),1,1)='a'--+

substr为截取字符串函数,第一个参数为我们的SQL语句,第二个参数1表示从第一个字符开始,第三个参数表示截取一个字符。并且该字符为a。

通过bp工具暴力破解

通过上述方法即可获得当前数据库库名。

3.2获取所有数据库库名

第一步,获取字符长度

payload为:name=lili' and  length((select group_concat(schema_name)from information_schema.schemata))=1--+

开启bp

第二步,获取所有数据库库名

这边可以选择狙击手模式(sniper)也可以选择集束炸弹模式(cluster bomb),狙击手模式需要手动修改参数,集束炸弹模式对电脑配置要求比较高,此处演示集束炸弹模式

根据破解的结果可以知道相应的答案

4.使用其他函数进行布尔类型的盲注(演示获取当前数据库)

4.1  left()函数:

语法:left (string,n) string为要截取的字符串,n为长度。

payload:name=lili' and left((select database()),1)='p'--+

4.2 mid()函数:

语法:mid(string, start[, length]) column_name为要提取字符的字段,start为开始截取位置(起始值是1),length为截取的长度(可选,默认余下所有字符)

char(x)函数:将x的值转为所对应的字符

payload:name=lili' and mid((select database()),1,1)=char(112)--+

4.3 正则表达式 regexp :

正则表达式语法: regexp ^[a-z] 表示字符串中第一个字符是在 a-z范围内。regexp ^a 表示字符串第一个字符是a。regexp ^ab 表示字符串前两个字符是ab。

payload:name=lili' and  (select database()) regexp '^p'--+

4.4 like函数:

语法:Like 'a%'表示字符串第一个字符是a。

Like 'ab%'表示字符串前两个字符是ab。

%表示为任意值

payload:name=lili' and  (select database()) like 'p%'--+

4.5 if语句 :

语法:if(判断条件,正确返回的值,错误返回的值)

注意数据库中的if与后端if不一样

payload:name=lili' and 1= if(((select database())like 'p%'),1,0)--+

表示如果if语句中的第一个参数为真,则输出第一个值1,不为真输出第二个值0;

六、基于时间类型的盲注

1.何时利用时间类型的盲注:

页面上没有显示位和SQL语句执行的错误信息,正确执行和错误执行的返回界面一样,此时需要使用时间类型的盲注。

时间型盲注与布尔型盲注的语句构造过程类似,通常在布尔型盲注表达式的基础上使用IF语句加入延时语句来构造,由于时间型盲注耗时较大,通常利用脚本工具来执行,在手工利用的过程中较少使用。

2.时间类型盲注的注意事项

  1. 通常使用sleep()等专用的延时函数来进行时间盲注,特殊情况下也可以使用某些耗时较高的操作代替这些函数。
  2. 为了提高效率,通常在表达式判断为真时执行延时语句。
  3. 时间盲注语句拼接时无特殊要求,保证语法正确即可。

3.基于时间盲注的演示

1.通过时间线判断sql语句是否执行

2.通过添加sleep函数判断:

payload:name=lili'and sleep(5)--+    执行成功时间线为5s

payload:name=lili''and sleep(5)--+    执行失败时间线为32ms

3.通过时间盲注获取当前数据库

第一步:

首先需要获取数据库长度

payload:name=lili'and if(length((select database()))=7,sleep(5),0)--+

根据时间线判断可知数据库的字符长度为7

第二步:

获取当前数据库的库名

payload:name=lili'and if(substr((select database()),1,1)='p',sleep(5),0)--+

根据时间线判断当前数据库的库名的第一个符为‘p’

也可以使用上边布尔类型盲注的其他函数执行。

SQL注入-盲注(布尔盲注与时间盲注)相关推荐

  1. 【SQL注入-05】布尔盲注案例

    目录 1 概述 2 操作环境 3 操作具体步骤 3.1 判断是否存在注入点及注入的类型 3.2 测试数据库库名长度 3.3 逐个测试数据库库名的字符 3.4 测试该数据库中所有表名 3.5 测试use ...

  2. 【SQL注入14】布尔盲注的半自动化实现(基于BurpSuite工具和sqli-labs-less8靶机平台)

    目录 1 概述 2 实验简介 2.1 实验平台 2.2 实验目标 3 实验过程 3.1 判断注入点及注入类型 3.2 爆库名(踩坑) 3.3 爆库名(成功) 3.4 爆表名 3.5 爆字段名 3.6 ...

  3. sql注入学习——布尔盲注

    前言:之前通过前九关学习到了回显注入.报错注入等一些方法,这次就来详细的学习布尔盲注. 首先来了解一下盲注的概念 盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL ...

  4. SQL注入原理-布尔盲注

    小伙伴们大家好,今天为大家带来的使SQL注入原理之布尔盲注. 目录 布尔盲注使用的环境 常用函数与语句 substr()函数 ord()函数 length()函数 实战演示 1.判断是否存在注入点 2 ...

  5. SQL注入学习——时间盲注详解 sqli-labs(Less 9)

    文章目录 前言: 一.基础知识 1.时间盲注简介: 2.时间盲注常用的函数: 二.Less9 基于时间的单引号盲注 1.判断数据库名的长度: 2.猜测数据库: 3.判断表名的长度 4.猜测 secur ...

  6. 渗透测试——sql注入进阶/基于时间的盲注/一看就会/

    目录 一.注入点判断 注入类型 SQL注入的类型 二.基于时间的时间盲注 什么是时间盲注 sleep()函数 常用函数 三.bWAPP基于时间的盲注实战 一.注入点判断 1.输入一个单引号',因为语句 ...

  7. SQL注入原理及绕过技术

    目录 sql注入产生的原因 万能密码介绍 sql注入验证 mysql 5.x数据库介绍 sql数据库增删改查 Mysql常用的聚合函数 mysql注释 SQL注入的分类 报错注入 盲注注入 user- ...

  8. SQL注入基础原理与案例(详细总结)

    SQL注入基础原理与案例 一.前言 二.漏洞概述及危害 1.漏洞概述 2.漏洞危害 3.漏洞防范 三.SQL注入 1.SQL注入方式 (1)信息收集 (2)数据注入 (3)高权限注入 2.判断是否存在 ...

  9. 渗透测试SQL注入——Sqlilabs关卡详解

    目录 报错函数floor的利用 利用select into outfile写一句话木马 利用load_file 读敏感文件 利用sqlmap探测 sql盲注 get基于时间的盲注应用 post基于时间 ...

  10. 渗透学习-SQL注入篇-基础知识的学习(持续更新中)

    提示:仅供进行学习使用,请勿做出非法的行为.如若由任何违法行为,将依据法律法规进行严惩!!! 文章目录 前言 一.SQL注入产生的原因 二.手工注入大致过程 1.判断注入点: 2.猜解列名 3.猜解能 ...

最新文章

  1. 项目日志2-系统降级模块设计
  2. 黑色诱惑 -- Media Player 11
  3. 101. Leetcode 139. 单词拆分 (动态规划-完全背包)
  4. samba客户端的总结与归纳
  5. Kafka 是如何保证数据可靠性和一致性
  6. .NET开源MSSQL、Redis监控产品Opserver之Redis配置
  7. React开发(169):ant design Popconfirm 使用
  8. Apache出现AH00558错误解决办法
  9. Go的数组切片 Python的列表
  10. 吴恩达深度学习1.4练习_Neural Networks and Deep Learning
  11. 微信大数据:中国人怎么过国庆长假?
  12. 大数据解析:程序员到底能干到多少岁?
  13. c++ 关于heap的STL用法
  14. 用python画漂亮的图案-使用 Python Turtle 设计简单而又美丽的图形
  15. MATLAB小波变换图像处理简单示例
  16. 引入uni-app组件时报错:文件查找失败:‘@/compents/uni-popup.vue‘
  17. 华为手机怎么复制门禁卡?
  18. CSS--2D 3D
  19. 本地主机可以ping通虚拟机,虚拟机ping不通本地主机,原因(检查是否启用防火墙规则)?
  20. 基于ping的过程学习二、三层转发之三(ARP表、FDB表、路由表详解)

热门文章

  1. mysql key语句_mysql建表语句key的含义
  2. java 解析二进制文件保存为txt文件
  3. Visual Studio 2015的破解密钥
  4. 微软MDT 安装与配置(二)
  5. Linux桌面文件被隐藏,在Deepin系统中隐藏桌面图标的好办法
  6. chrome官网下载离线安装包
  7. cisco思科交换机命令参考大全
  8. java面试简历项目经验,java面试题项目中的难点
  9. 输入法里打出特殊符号
  10. 海康IP_Tool修改工具使用教程