IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL注入渗透与攻防(八)之延时注入 -> 正文阅读

[大数据]SQL注入渗透与攻防(八)之延时注入

目录

基于时间的SQL盲注 - 延时注入

案列演示


基于时间的SQL盲注 - 延时注入

关于延时注入的使用场景一般在我们测试的注入点没有报错信息又没有回显点的情况下进行的。通过对于时间的延时判断来猜解数据。在实战过程中并不推荐大家通过延时注入去判断数据库,因为实在是太麻烦了。

知识储备:

sleep(): Sleep 函数可以使计算机程序(进程,任务或线程)进入休眠

if(): i f 是 计算机编程语言一个关键字,分支结构的一种

mid(a,b,c): 从b开始,截取a字符串的c位

substr(a,b,c): 从b开始,截取字符串a的c长度

left(database(),1),database() : left(a,b)从左侧截取a的前b位

length(database())=8 : 判断长度

ord=ascii ascii(x)=100: 判断x的ascii值是否为100

在不使用sleep下查询数据所需要的时间:0.03秒

使用sleep可以使查询数据休眠指定时间? ,我们这里指定休眠3秒。

if(a,b,c):可以理解在java程序中的三目运算符,a条件成立 执行b, 条件不成立,执行c :

使用if与sleep结合使用:

达到延时数据显示,从而通过数据显示的时间判断数据对错!?

案列演示

使用靶场less-2来实现延时注入:

我们构造如下语句:

id=1%20and%20sleep(if(database()=%27security%27,5,0)) --+

然后我们看到这条语句在执行的时候:

时间延迟显示了5秒,说明了数据库的名称是对的,所以if语句执行了延时5秒。

我们可以通过length()来判断数据库的长度 ,假如我们这里的数据库的名称长度为8,我们构造如下语句:

id=1%20and%20sleep(if(length(database())=8,8,0))

?最终页面加载了八秒才有回显,说明数据库字符长度为8,在实际中,我们可以通过这样的办法一个一个去猜解数据库库名的长度。

接下来我们讲解延时注入里常用到的函数

mid这个函数有三个参数:

?mid()使用:

?我们这里数据库的名称是test,mid这个函数从当前的数据库的名称中第一位开始,截取一位长度的字符串,所以返回了t,如果我们这里是select mid(database(),1,2)l;的话,那么就会返回te两个字符了。

substr()函数 :

Substr()和substring()函数实现的功能是一样的,均为截取字符串。

string substring(string, start, length) string substr(string, start, length)

参数描述同mid()函数,第一个参数为要处理的字符串,start为开始位置,length为截取的长度。

substr()函数使用:

Left()函数? :

Left()得到字符串左部指定个数的字符

Left ( string, n ) string为要截取的字符串,n为长度。

?ASCII码

使用ascii函数() :

?这里的意思就是x这个字符的ascii码字符十进制是否为120,是则回显123,否则回显234.这里回显了123,说明x这个字符十进制为120。

id=1 and if(ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=120,sleep(3),0)

我们这里构造如上的语句就是判断当前的数据库的第一个表的表名第一位是否为‘x’,是则休眠3秒,否则不休眠。在实际操作中,我们可以一个一个修改位于120这个位置上的数字去猜解当前的表名,是不是看起来太麻烦了?所以实战中我并不推荐这种方法去爆破数据库。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:16:02  更:2022-12-25 11:16:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 7:25:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码