mysql 时间戳获取(MySQL时间盲注的五种延时方法实现)
mysql 时间戳获取
MySQL时间盲注的五种延时方法实现mysql时间盲注五种延时方法 (pwnhub 非预期解)
延时注入函数
五种:sleep(),benchmark(t,exp),笛卡尔积,get_lock() rlike正则
sleep()
|
sleep(x) select sleep(5); |
benchmark() 重复执行某表达式
|
benchmark(t,exp) select benchmark( count ,expr),是重复执行 count 次expr表达式,使得处理时间很长,来产生延迟, 比如 select benchmark(1000000,encode( "hello" , "good" )); select benchmark( 5000000, md5( 'test' )); |
笛卡尔积
|
笛卡尔积(因为连接表是一个很耗时的操作) axb=a和b中每个元素的组合所组成的集合,就是连接表 select count (*) from information_schema.columns a, information_schema.columns b, information_schema.tables c; select * from table_name a, table_name b select * from table_name a, table_name b,table_name c select count (*) from table_name a, table_name b,table_name c 表可以是同一张表 |
get_lock() 加锁
get_lock(key,timeout) 需要两个连接会话
release_lock(key) 锁是否释放,释放了返回1
is_free_lock(key) 返回当前连接id,表示名称为'xxxx'的锁正在被使用。
key 锁的名字,timeout加锁等待时间,时间内未加锁成功则事件回滚。get_lock 加锁成功返回1,
这个锁是应用程序级别的,在不同的mysql会话之间使用,是名字锁,不是锁具体某个表名或字段,具体是锁什么完全交给应用程序。它是一种独占锁,意味着哪个会话持有这个锁,其他会话尝试拿这个锁的时候都会失败。
session a select get_lock('test',1);
session b select get_lock('test',5);
可以指定表也可以不指定
直到关闭连接会话结束,锁才会释放,但不像redis那样加了锁只要不主动释放就一直有。
但是当会话1 get_lock 后,未释放。会话2 不get_lock 同一个key,或者就不get_lock,依然可以对数据进行任何操作,所以加锁只是说人为的主观的想要让某些操作同时只有一个连接能进行操作,别的连接不调用get_lock加同一个锁,那它不会受到任何影响,想干什么干什么。
session1
session2
get_lock:但是当会话1 get_lock 后,未释放。会话2 不get_lock 同一个key,或者就不get_lock,依然可以对数据进行任何操作,所以加锁只是说人为的主观的想要让某些操作同时只有一个连接能进行操作,别的连接不调用get_lock加同一个锁,那它不会受到任何影响,想干什么干什么。
session1
session2
优缺点分析 (1)这种方式对于更新所有列比较有效,但是得把查询的语句也放在锁内执行; (2)这种方式当客户端无故断线了会自动释放锁,比较好,不像redis锁那样,如果加完锁断了,那么锁一直在; (3)这种方式是针对锁内的所有操作加锁,并不针对特定表或特定行,所以使用了同一个key的锁但不同的操作都会共用一把锁,会导致效率低下; (4)如果查询语句放在锁之前,则数据可能是旧的,更新之后会把查询之后更新之前别的客户端更新的数据覆盖掉;
rlike regexp正则匹配
通过rpad
或repeat
构造长字符串,加以计算量大的pattern,通过repeat的参数可以控制延时长短。
|
select rpad( 'a' ,4999999, 'a' ) rlike concat(repeat( '(a.*)+' ,30), 'b' ); |
正则语法:
. : 匹配任意单个字符
* : 匹配0个或多个前一个得到的字符
[] : 匹配任意一个[]内的字符,[ab]*可匹配空串、a、b、或者由任意个a和b组成的字符串。
^ : 匹配开头,如^s匹配以s或者s开头的字符串。
$ : 匹配结尾,如s$匹配以s结尾的字符串。
{n} : 匹配前一个字符反复n次。
rpad(str,len,padstr)
用字符串 padstr对 str进行右边填补直至它的长度达到 len个字符长度,然后返回 str。如果 str的长度长于 len',那么它将被截除到 len个字符。
|
mysql> select rpad( 'hi' ,5, '?' ); -> 'hi???' |
repeat(str,times) 复制字符串times次
⭐️寻找新的延迟函数
|
concat(rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' ),rpad(1,999999, 'a' )) rlike '(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+(a.*)+b' |
以上代码等同于 sleep(5)
到此这篇关于mysql时间盲注的五种延时方法实现的文章就介绍到这了,更多相关mysql 时间盲注 内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://www.cnblogs.com/forforever/p/13019703.html
- idea关联mysql数据库(IDEA无法连接mysql数据库的6种解决方法大全)
- mysql统计函数详解(浅析MySQL的基数统计)
- MySQL 使用事件(Events)完成计划任务(MySQL 使用事件Events完成计划任务)
- mysql存储引擎的创建与修改(关于MySQL Memory存储引擎的相关知识)
- dockermysql配置详解(Docker 部署Mysql 服务和Redis 服务的方法)
- mysql的视图和临时表区别(MySQL 内存表和临时表的用法详解)
- 怎么用docker中的mysql连接数据库(连接docker里面的mysql失败解决方法)
- mysql8.0设置root密码(MySQL8.0.23版本的root密码重置最优解法)
- mysql建立分区表指令(MySQL高级特性——数据表分区的概念及机制详解)
- mysql查看执行慢的sql(系统隐形杀手——阻塞与等待SQL)
- mysqldump备份缺点(MySQL5.7 mysqldump备份与恢复的实现)
- php考试复习题(php+mysql开发的最简单在线题库在线做题系统完整案例)
- mysql主从复制时突然来了一批数据(MySQL主从复制断开的常用修复方法)
- 对mysql性能优化的看法(聊聊MySQL的COUNT的性能,看看怎么最快?)
- mysql8.0.25安装教程(Mysql8.0.17安装教程推荐)
- 宝塔数据库不小心删了(宝塔面板MySQL数据库经常自动停止的解决方法)
- 通过体温就能为智能手表充电 原来是用NASA在空间站用的黑科技(通过体温就能为智能手表充电)
- 智能手表兼容Windows和Android 无需充电挑战苹果(智能手表兼容Windows和Android)
- 一天一冲也算表 麦步,一款待机 21 天的智能手表体验评测(一天一冲也算表)
- 魅族智能手表充电座曝光 Type-C 接口,线座分离设计(魅族智能手表充电座曝光)
- 华为 Watch GT2 Pro 智能手表曝光,新增支持无线充电(华为WatchGT2)
- vivo首款智能手表来了 也有血氧饱和度监测,一次充电18天续航(vivo首款智能手表来了)
热门推荐
- python爬取酷狗收费音乐(python爬取酷狗音乐排行榜)
- react性能优化是哪个周期(React 并发功能体验前端的并发模式)
- mysql自增长语句(mysql实现自增序列的示例代码)
- docker redis安装配置(使用docker搭建redis主从的方法步骤)
- SQL中Union,Intersect,Except
- centosdocker镜像安装mysql(linux下利用Docker安装mysql的步骤)
- php标签怎么写(php 使用mpdf实现指定字段配置字体样式的方法)
- 表空间不足无法登录(System表空间不足的报警问题浅析)
- python的decode函数在哪个模块(python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决)
- python csv文件读取方法(对python读取zip压缩文件里面的csv数据实例详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9