在网络安全渗透测试中,通过数据库写入文件获取服务器 Shell 是一种常见且有效的攻击手段。这种方式的核心在于利用数据库的文件操作权限,将恶意脚本写入 Web 可访问目录,进而实现对服务器的控制。以下详细介绍几种主流的实现方式及操作细节。
核心前提条件
成功通过写入文件获取 Shell,需同时满足三个基础条件,缺一不可:
数据库最高权限:需拥...
一、提权前提与核心条件
(一)适用场景
当已获取 WebShell 但缺乏系统级权限,且其他提权方式(如内核漏洞、配置错误)不可行时,可尝试通过 MySQL 数据库提权。
(二)核心要求
必须掌握高权限数据库用户的账号密码(如root权限),具备执行文件操作、配置修改等高级权限。
目标服务器需允许数据库用户与文件系统交互(如sec...
命令行工具
mysql(命令行客户端)
功能:执行 SQL 语句、管理数据库,是最基础的交互工具。
连接示例:
12<code>mysql -u root -p -P 3306 -h localhost</code>
-u指定用户名,-p用于输入密码,-P指定端口,-h指定主机。
...
表存储位置与文件
MySQL 表默认存储在{MySQL安装目录}/data/{数据库名}/,不同存储引擎的文件不同:
MyISAM 引擎(已较少使用)
表名.frm:存储表结构定义;
表名.MYD:存储表数据;
表名.MYI:存储表索引。
InnoDB 引擎(默认推荐)
数据和索引通常存储在共享表空间...
数据库用户管理(权限控制)
添加用户
123456<code>-- 创建只能本地登录的用户(localhost)CREATE USER 'test_user'@'localhost' IDENTIFIED BY '123456&am...
内连接(INNER JOIN)
只获取两张表中匹配条件的记录,即 “交集” 部分。
语法
1234<code>SELECT 字段 FROM 表A INNER JOIN 表B ON 表A.关联字段 = 表B.关联字段;</code>
示例
查询学生姓名和对应的课程名(只显示有课程的学生):...
投影查询(只查需要的字段)
只查询指定字段,减少数据传输量,提升效率:
123<code>-- 只查询学生姓名和年龄SELECT name, age FROM students;</code>
限制查询(分页与取前 N 条)
查询前 N 条记录
1234<code>SEL...
插入数据(INSERT)
语法
12<code>INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);</code>
示例
向users表插入一条用户数据:
123<code>INSERT INTO users (user...
数据库基本操作(DDL)
查看所有数据库
12<code>SHOW DATABASES;</code>
创建数据库
123456<code>-- 直接创建(若数据库已存在会报错)CREATE DATABASE 数据库名;-- 推荐:判断不存在时再创建CREATE DATABAS...
MySQL 安装指南(新手友好)
推荐安装方式
对于新手,phpStudy 集成开发环境是最优选择(Windows 系统),它包含 Apache 服务器、MySQL 数据库和 PHP 语言环境,一键安装即可使用,无需复杂配置。
安装路径必须避免中文和空格(例如D:\phpstudy_pro,而非D:\我的软件\php study...