SQL注入-盲注(布尔盲注与时间盲注)

article/2025/9/13 17:18:40

目录

一、什么是盲注

二、盲注的分类

三、利用盲注的前提条件

四、盲注的优缺点

五、基于布尔类型的盲注

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’

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

 

 

 

 


http://chatgpt.dhexx.cn/article/vknFs7ny.shtml

相关文章

详述ROWID的原理及其使用

ROWID基础概念 在Oracle内部&#xff0c;每个数据表都有一个伪列ROWID&#xff0c;用于存放被称为ROWID的二进制值。每个ROWID代表了一行数据的存储地址。物理ROWID能够标识普通数据表中的一行信息。其中ROWID类型只能存储物理内容&#xff0c;而UROWID(universal rowid)类型可…

Oracle中ROWNUM伪列和ROWID伪列的用法与区别

做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等&#xff0c;所以只能通过伪列的方式去满足分页功能&#xff0c;在此&#xff0c;不谈分页方法&#xff0c;只从根本上去介绍这两个伪列的用法与原理&#xff0c;同样还是以scott用户的…

Silverlight MMORPG WebGame游戏设计(二)--通讯协议之惑

晚上看到我在silverlight webGame上的导师"深蓝色右手"拿到 荣誉&#xff0c;觉得他名至实归。回想自己2010过年来到北京忙于一些琐屑的事情&#xff0c;好久没有动手写我的web传奇了。 去年在群里说我过年要开源我的Web传奇&#xff0c;写一些服务端的文章。后来我发…

amf webgame

一篇来自职业欠钱哥哥的东西&#xff0c;很有帮助。 这两年WebGame比较火&#xff0c;WebGame中&#xff0c;前端用Flash表现比较多&#xff0c;而服务器端依然是Web应用。 不少产品已经开始用AMF&#xff08;Action Message Format&#xff09;来取代标准的HTTP交互。&#xf…

webgame《天龙诀》完整网页游戏源码

webgame 天龙诀源码&#xff0c;网页端使用了Flash游戏引擎&#xff0c;服务端c开发&#xff0c;解压后488mb&#xff0c;仅供学习参考&#xff0c;请勿用于商业用途。 天龙诀剧情情节扣人心弦&#xff0c;让各位玩家身临其境&#xff0c;化身门派高手经历艰难险阻、感受受生死…

[转]用python来开发webgame服务端(4)

[刺鸟原创文章&#xff0c;转载请注明出处] 前面的工作都已准备就绪&#xff0c;现在我们得来看看服务端怎么和客户端之间进行通信了&#xff0c;Python和FLASH之间的通信&#xff0c;我整理为以下3种&#xff1a; 1、用现成的协议及类库处理&#xff0c;比如&#xff1a;py…

[转]用python来开发webgame服务端(2)

[刺鸟原创文章&#xff0c;转载请注明出处] 就在刚才&#xff0c;我们用基于python下的Twisted库写了一个简单的socket服务器&#xff0c;不知道它的性能和基本的承载到底如何呢&#xff1f;接下来&#xff0c;我们作一个简单的测试。 说是简单的测试&#xff0c;一点也不假…

转:: 刺鸟:用python来开发webgame服务端(1)

来源&#xff1a;http://ciniao.me/article.php?id9 --------------- 刺鸟原创文章&#xff0c;转载请注明出处 在开始之前&#xff0c;先简单描述一下项目的特点&#xff1a;我要实现的是一个mmorpg的webgame&#xff0c;地图上需要看到其他的玩家&#xff0c;战斗系统采用…

转:: 刺鸟:用python来开发webgame服务端(4)

来源&#xff1a;http://ciniao.me/article.php?id14 --------------- 刺鸟原创文章&#xff0c;转载请注明出处 前面的工作都已准备就绪&#xff0c;现在我们得来看看服务端怎么和客户端之间进行通信了&#xff0c;Python和FLASH之间的通信&#xff0c;我整理为以下3种&am…

[转]用python来开发webgame服务端(3)

[刺鸟原创文章&#xff0c;转载请注明出处] 在之前的准备工作中&#xff0c;我们已经建立了一个socket服务器&#xff0c;并且经过了简单的测试&#xff0c;得到的结论是python可以满足我们的需求&#xff0c;那么接下来&#xff0c;我们要解决的是身为webgame服务端必须的几个…

转:: 刺鸟:用python来开发webgame服务端(2)

来源&#xff1a;http://ciniao.me/article.php?id10 --------------- 刺鸟原创文章&#xff0c;转载请注明出处 就在刚才&#xff0c;我们用基于python下的Twisted库写了一个简单的socket服务器&#xff0c;不知道它的性能和基本的承载到底如何呢&#xff1f;接下来&#…

转:: 刺鸟:用python来开发webgame服务端(3)

来源&#xff1a;http://ciniao.me/article.php?id11 --------------- 刺鸟原创文章&#xff0c;转载请注明出处 在之前的准备工作中&#xff0c;我们已经建立了一个socket服务器&#xff0c;并且经过了简单的测试&#xff0c;得到的结论是python可以满足我们的需求&#x…

用python来开发webgame服务端(4)

http://ciniao.me/article.php?id14 前面的工作都已准备就绪&#xff0c;现在我们得来看看服务端怎么和客户端之间进行通信了&#xff0c;Python和FLASH之间的通信&#xff0c;我整理为以下3种&#xff1a; 1、用现成的协议及类库处理&#xff0c;比如&#xff1a;pyamf …

用python来开发webgame服务端(2)

http://ciniao.me/article.php?id10 刺鸟原创文章&#xff0c;转载请注明出处 就在刚才&#xff0c;我们用基于python下的Twisted库写了一个简单的socket服务器&#xff0c;不知道它的性能和基本的承载到底如何呢&#xff1f;接下来&#xff0c;我们作一个简单的测试。 …

用python来开发webgame服务端(3)

刺鸟原创文章&#xff0c;转载请注明出处 在之前的准备工作中&#xff0c;我们已经 建立了一个socket服务器 &#xff0c;并且经过了 简单的测试 &#xff0c;得到的结论是python可以满足我们的需求&#xff0c;那么接下来&#xff0c;我们要解决的是身为webgame服务端必须…

用python来开发webgame服务端

刺鸟原创文章&#xff0c;转载请注明出处 在开始之前&#xff0c;先简单描述一下项目的特点&#xff1a;我要实现的是一个mmorpg的webgame&#xff0c;地图上需要看到其他的玩家&#xff0c;战斗系统采用半回合制的模式&#xff0c;所谓的半回合制&#xff0c;即是&#xff1a;…

用python来开发webgame服务端(1)

http://ciniao.me/article.php?id9 刺鸟原创文章&#xff0c;转载请注明出处 在开始之前&#xff0c;先简单描述一下项目的特点&#xff1a;我要实现的是一个mmorpg的webgame&#xff0c;地图上需要看到其他的玩家&#xff0c;战斗系统采用半回合制的模式&#xff0c;所谓…

server: WebGame服务端架构分析

MMORPG服务器架构 一.摘要 1.网络游戏 MMORPG 整体服务器框架&#xff0c;包括早期,中期&#xff0c;当前的一些主流架构 2.网络游戏网络层,包括网络 协议 , IO 模型&#xff0c;网络框架&#xff0c;消息编码等。 3.网络游戏的 场景 管理, AI &#xff0c; 脚本 的应用等。 4.…

WebGame服务端架构分析(一)

做webgame也有段时间了,最近上线的游戏还处于起步阶段,第二个月收入突破100万了,跟市面上大的webgame比起来,根本不算什么,但有收入总比没有好,呵呵,以后还需更加努力。现在总结一下自己webgame的架构设计,总结的目的一方面是为了共享给网上的朋友,也希望网友给我提出…

Webgame服务端分布式架构设计

Webgame服务端分布式架构设计 ——By King 最近在设计实现Webgame服务端游戏架构&#xff0c;跟大家分享下。 以下对架构的几点说明&#xff1a; 1&#xff0e; DB&#xff1a;数据库层。使用MongoDB, 可以作分布式&#xff0c;按webgame的需求&#xff0c;基本应该是不需…