解决 DVWA 联合注入报错:Illegal mix of collations for operation ‘UNION‘ 全指南

一、问题背景

在 DVWA 靶场进行 SQL 联合注入测试时,很多小伙伴都会遇到一个经典报错:

plaintext

复制代码
Illegal mix of collations for operation 'UNION'

这个报错的本质原因非常明确:执行UNION操作时,参与联合查询的多个结果集的字符集(collation)不一致,导致 MySQL 无法完成数据合并,直接抛出错误。


二、报错原因深度解析

UNION操作要求前后两个查询的列数、列类型、字符集排序规则 完全一致。当 DVWA 的数据库、表、字段使用了不同的字符集(比如部分是utf8mb4_general_ci,部分是latin1_swedish_ci),就会触发这个字符集冲突,导致联合注入直接失败。

三、两种解决方案(从根源解决 + 快速应急)

方案一:永久修复(修改配置,一劳永逸)

步骤 1:找到配置文件

定位到 DVWA 的数据库配置文件,路径为:DVWA/dvwa/includes/DBMS/MySQL.php(如果是 phpstudy 集成环境,路径通常为phpstudy_pro/WWW/DVWA/dvwa/includes/DBMS/MySQL.php

步骤 2:修改数据库创建语句

用编辑器(记事本、VS Code、Notepad++ 均可)打开MySQL.php,检索关键词$create_db,找到这行代码:

create_db = "CREATE DATABASE {_DVWA'db_database'}";

  1. 修改为(注意空格和语法):php运行

    create_db = "CREATE DATABASE {_DVWA[ 'db_database' ]} COLLATE utf8_general_ci;";

注意:}COLLATE之间必须有空格,否则会语法错误!

✅ 关键:COLLATE 前面必须有空格 ,且要写在 {} 外面,不能写错拼写。

  1. 保存文件后,回到 DVWA Setup 页面,点击 「Create / Reset Database」 重新创建数据库。
步骤 3:重置 DVWA 数据库
  1. 打开 DVWA 靶场,点击左侧菜单的 Setup / Reset DB
  2. 找到Create / Reset Database按钮,点击reset database重置数据库
  3. 重置完成后,数据库会统一使用utf8_general_ci字符集,从根源解决冲突

四、解决页面样式残缺(布局错乱)

页面不完整是因为 CSS/JS 静态资源加载失败,按下面步骤修复:
1.强制刷新浏览器缓存
○Windows:Ctrl + F5
○Mac:Cmd + Shift + R这会强制重新加载所有样式文件,解决缓存导致的错乱。

若有收获,就点个赞吧

相关推荐
菩提小狗16 小时前
每日安全情报报告 · 2026-08-10
网络安全·漏洞·cve·安全情报·每日安全
笨鸟先飞,勤能补拙17 小时前
网络安全等级保护 2.0:从定级备案、建设整改到持续合规的系统指南
网络·人工智能·windows·安全·web安全·网络安全·github
yagami_gagami18 小时前
2026平航杯内存取证(StarMem)
windows·网络安全
Aision_21 小时前
实习学习笔记:HTTP请求走私漏洞全方位解析
笔记·学习·安全·web安全·http·网络安全·网络攻击模型
HackTwoHub1 天前
Fastjson1全版本(1.2.47→1.2.83 )漏洞利用3万字完整总结、绕过分析、探测、WAF 绕过与 Gadget 汇总
前端·javascript·人工智能·安全·ajax·网络安全·自动化
数据知道1 天前
SSTI 模板注入:Jinja2 沙箱逃逸实战
网络·安全·网络安全
菩提小狗1 天前
每日安全情报报告 · 2026-08-07
网络安全·漏洞·cve·安全情报·每日安全
deepseek232 天前
OpenAI 首次为自家模型踩刹车:Astra「无法排除关键网络能力」,Preparedness Framework 第一次真的咬人
人工智能·网络安全·ai agent
m0_547486662 天前
《网络协议安全》全套PPT课件(太原理工大学)
网络协议·安全·网络安全
gwf2162 天前
Mellanox ConnectX网卡RDMA性能优化全指南:深度解析(固件调优、中断亲和与GPUDirect必知必会)
网络协议·tcp/ip·网络安全·性能优化·tcp·tcpdump