震惊,用一条命令,将MySQL 5.7.44伪装成5.7.88版本?

来源:这里教程网 时间:2026-03-01 18:29:07 作者:

今天看了公众号"老叶茶馆"的一篇文章《MySQL/GreatSQL 应对安全扫描的绝招》。 文章链接如下:

https://mp.weixin.qq.com/s/a3Vy1qSwQclX2xhdVhgfyw

文章显示可以用sed命令将GreatSQL-8.0.32-26改成GreatSQL-8.0.40-26版本,感觉很不可思议, 难道数据库启动时不会校验版本信息吗? 下面我尝试将 MySQL 5.7.44版本改成一个不存在的版本 MySQL 5.7.88版本,可以正常启动数据库,检查版本确实变成了5.7.88。 MySQL 5.7分支最后一个版本就是5.7.44版本,所以根本不存在5.7.88版本。

https://downloads.mysql.com/archives/community/

测试过程如下: 注意:仅供参考,请勿在生产环境执行! 1.检查当前版本

[mysql@cjc-db-01 ~]$ which mysql
/mysqldata/app/5.7.44/bin/mysql
[mysql@cjc-db-01 ~]$ which mysqld
/mysqldata/app/5.7.44/bin/mysqld
[mysql@cjc-db-01 ~]$ mysql -V
mysql  Ver 14.14 Distrib 5.7.44, for el7 (x86_64) using  EditLine wrapper
[mysql@cjc-db-01 ~]$ mysqld -V
mysqld  Ver 5.7.44 for el7 on x86_64 (MySQL Community Server (GPL))

2.启动数据库

[mysql@cjc-db-01 ~]$ mysqld --defaults-file=/etc/my.cnf --user=mysql &

3.通过命令检查版本

[mysql@cjc-db-01 ~]$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.44-log MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.44-log |
+------------+
1 row in set (0.00 sec)

4.停库

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)

5.备份mysqld文件

[mysql@cjc-db-01 bin]$ pwd
/mysqldata/app/5.7.44/bin
[mysql@cjc-db-01 bin]$ cp mysqld mysqld_5744bak
[mysql@cjc-db-01 bin]$ ls -lrth mysqld*
....
-rwxr-xr-x 1 mysql mysql 241M Oct 11  2023 mysqld
-rwxr-xr-x 1 mysql mysql 241M Jan  3 21:08 mysqld_5744bak

检查mysqld文件中"5.7.44"关键字相关信息

[mysql@cjc-db-01 bin]$ strings mysqld|grep -i 5.7.44|wc -l
5600
[mysql@cjc-db-01 bin]$ strings mysqld|grep -i 5.7.44|more
5.7.44
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.44/sql/mysqld.cc
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.44/sql/rpl_gtid.h
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.44/sql/binlog.h
....

6.利用 sed 修改替换 MySQL 版本号

[mysql@cjc-db-01 bin]$ cd /mysqldata/app/5.7.44/bin
[mysql@cjc-db-01 bin]$ sed -i 's/5\.7\.44/5.7.88/ig' mysqld
[mysql@cjc-db-01 bin]$ strings mysqld|grep -i 5.7.88|more
5.7.88
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.88/sql/mysqld.cc
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.88/sql/rpl_gtid.h
/var/lib/pb2/sb_1-12949965-1697025598.1/mysql-5.7.88/sql/binlog.h

7.启动数据库

[mysql@cjc-db-01 ~]$ mysqld --defaults-file=/etc/my.cnf --user=mysql &
[2] 8662
[1]   Done                    mysqld --defaults-file=/etc/my.cnf --user=mysql

8.检查版本 检查日志,显示为mysqld 5.7.88-log。

[mysql@cjc-db-01 log]$ tail -10f error.log 
...
2025-01-03T21:14:55.154580+08:00 0 [Note] mysqld (mysqld 5.7.88-log) starting as process 8662 ...
...

mysql客户端还是5.7.44版本

[mysql@cjc-db-01 ~]$ mysql -V
mysql  Ver 14.14 Distrib 5.7.44, for el7 (x86_64) using  EditLine wrapper

mysql服务端显示5.7.88版本

[mysql@cjc-db-01 ~]$ mysqld -V
mysqld  Ver 5.7.88 for el7 on x86_64 (MySQL Community Server (GPL))

登录数据库,执行命令,均显示5.7.88版本

[mysql@cjc-db-01 ~]$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.88-log MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.88-log |
+------------+
1 row in set (0.00 sec)

9.测试 可以正常新增和查询数据。

mysql> create table cjc.t0103(id int,name varchar(10));
Query OK, 0 rows affected (0.31 sec)
mysql> insert into cjc.t0103 values(1,'x');
Query OK, 1 row affected (0.38 sec)
mysql> select * from cjc.t0103;
+------+------+
| id   | name |
+------+------+
|    1 | x    |
+------+------+
1 row in set (0.00 sec)

10.回退

停库
mysql> shutdown;
[mysql@cjc-db-01 bin]$ pwd
/mysqldata/app/5.7.44/bin
回退
[mysql@cjc-db-01 bin]$ mv mysqld mysqld_5788bak
[mysql@cjc-db-01 bin]$ mv mysqld_5744bak mysqld
启动数据库
[mysql@cjc-db-01 bin]$ mysqld --defaults-file=/etc/my.cnf --user=mysql &

###chenjuchao 20250103### 欢迎关注我的公众号《IT小Chen》

相关推荐