堆叠注入之利用handler语句获取数据
BUUCTF之[GYCTF2020]Blacklist
handler语句
HANDLER 是 MySQL 中用于直接访问表存储引擎接口的语句,类似于文件操作:
1 | -- 打开表 |
与union的对比
handler的优势
- 不需要知道列数,即不需要
order by来查询 - 不受
select限制,如果select被ban了也能查询到数据 - 访问数据更灵活,可以精确控制读取到哪一行
注入过程

首先测试一下是什么类型的注入,输入1'报错,即为字符型注入。

然后测试了1' order by 3,没有这一列,测试order by 2则通过。
尝试经典的联合查询注入,结果回显:

回显了waf,select等查询字符被过滤。大概率是堆叠注入。然后测试show语句,输入1';show databases;#,回显:

确认是堆叠注入,也能看到这些数据库名。然后看一下当前数据库的数据表,输入1';show tables;#,回显:

此时很明显了,flag就在这。然后查一下FlagHere这个表的字段,输入1';show columns from FlagHere;#,回显:

此时我们需要查询到flag字段里面的数据,这时就可以用上面讲到的handler语句来获取数据,输入1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#,即可回显flag。
总结
一般来说如果是有回显的SQL注入,而select之类的查询语句又被ban了,很大可能是堆叠注入。这可能需要对数据库有更深的理解,有机会的话还是可以再多学习一点数据库的知识。
- Title: 堆叠注入之利用handler语句获取数据
- Author: SoloWalker
- Created at : 2026-03-24 00:00:00
- Updated at : 2026-04-13 20:55:41
- Link: https://s0lowalker.github.io/2026/03/24/利用handler进行堆叠注入/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments