栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MYSQL handler的用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MYSQL handler的用法

前言:

        一直在坐ctf的web 题,遇到堆叠注入的题型不会做

源代码:

 if(preg_match('/file|into|dump|union|select|update|delete|alter|drop|create|describe|set/i',$username)){
    die(json_encode($ret));
  }

过滤了select 知道是堆叠,但是不会做了,搜了一下,才知道还有handler 这个用法

一、简介:

MySQL 除了可以使用 select 查询表中的数据,也可使用 handler 语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler 语句并不具备 select 语句的所有功能。它是 MySQL 专用的语句,并没有包含到SQL标准中。handler 语句提供通往表的直接通道的存储引擎接口,可以用于 MyISAM 和 InnoDB 表。

上代码分析下:

HANDLER snowy OPEN  [AS] alias
#打开句柄 表名为snowy 的表,as 别名为 alias

HANDLER snowy READ first
# 1、通过指定索引查看表,可以指定从索引那一行开始,通过 NEXT 继续浏览


# 2、通过索引查看表
# FIRST: 获取第一行(索引最小的一行)
# NEXT: 获取下一行
# PREV: 获取上一行
# LAST: 获取最后一行(索引最大的一行)


HANDLER snowy READ  { FIRST | NEXT | PREV | LAST }


# 关闭已打开的句柄
HANDLER tbl_name CLOSE

用环境测试一下,创建表:

create table handler_table(id int, name varchar(10));

插入数据:

insert into handler_table values(3, '张三');
insert into handler_table values(4, '李四');
insert into handler_table values(5, '王五');
insert into handler_table values(1, '刘一');
insert into handler_table values(2, '陈二');

查看数据

select * from handler_table;

 

二、 不通过索引查看表

HANDLER snowy OPEN [ [AS] alias]
# 打开一个表名为 snowy 的表的句柄

# READ FIRST: 获取句柄的第一行
# READ NEXT: 依次获取其他行(当然也可以在获取句柄后直接使用获取第一行)
# 最后一行执行之后再执行 READ NEXT 会返回一个空的结果
HANDLER tbl_name READ { FIRST | NEXT }
    [ WHERe where_condition ] [LIMIT ... ]
   
# 关闭以打开的句柄
HANDLER tbl_name CLOSE

打开句柄:

 查看数据:

handler handler_table read first;
handler handler_table read next;

 

 

 之后就是关闭句柄了:

handler handler_table close;

当然可以直接起别名了:

handler handler_table open as f;
handler f read first;
handler f read next;

暂时就了解这么多,详细的可以去看   【MySQL】MySQL 之 handler 的详细使用及说明

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号