MySQL遇到中文路径这样getshell!

admin 2026-01-26 02:01:46 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文探讨Windows下MySQLGetshell因中文路径乱码导致写入失败的问题,根源在于系统GBK与数据库UTF编码冲突。文中提供两种解决思路:修改Navicat客户端字符集为GBK,或执行SETcharacter_set_filesystem=’gbk’命令。该方法能确保Webshell准确写入中文路径,有效解决SQLMap等工具在实战中的写入障碍,具有较高的实战参考价值。 综合评分: 91 文章分类: 渗透测试,WEB安全,实战经验


cover_image

MySQL遇到中文路径这样getshell!

原创

白小客 白小客

白小客

2026年1月25日 13:46 广东

MySQL遇到中文路径这样getshell!

最近打靶场遇到一个情况,就是Windows下iis的mysql getshell问题,当路径存在中文时,无法直接写入webshell(当然还有其他数据库也会有这个问题,还没仔细研究,此文章只探讨mysql)。

1

问题解释

2

解决方法

1 问题解释

由于Windows系统的编码是GBK,而MySQ是utf8 和 utf8mb4 两种。这就会导致一个问题,当写入路径存在中文时,例如“C:/vulnIIS/俱乐部/1.txt”,由于MySQL与Windows的编码不一致,导致中文路径“俱乐部”会变成乱码。实际测试发现,直接写入,1.txt文件会写在“C:/vulnIIS/”下,而文件名变成乱码。

这里用navicat展示,sqlmap的–sql-shell也会是一样的情况。至于–os-shell,我还没去测试,猜测执行一下chcp 65001即可。

2 解决方法

【1】修改连接设置

这里用navicat演示。

第一步:右键点击“编辑连接”。

第二步:点击“高级”,客户端字符集选择“gbk”,编码也选择“gbk”。

这样就可以直接写入webshell。

【2】临时设置MySQL文件系统字符集转换规则。

执行如下命令:

SET character_set_filesystem = ‘gbk’;

设置 MySQL 会话级的文件系统字符集转换规则,简单说:当 MySQL 需要读取 / 写入服务器本地文件(比如 LOAD DATA、SELECT … INTO OUTFILE)时,会按照 gbk 编码来解析文件路径和文件内容的字符转换。

这样就可以直接写入webshell了。

对于sqlmap的–sql-shell来说,方法与第二个一样,不做演示。直接设置编码的命令我查了很久,AI会给一个什么charset的命令,我试了,没有用,只能用这第二个方法。

对于其他数据库而言,还没去测试,我认为方法原理一样,命令不一样罢了。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:白小客 白小客 白小客《MySQL遇到中文路径这样getshell!》

评论:0   参与:  0