1. 为什么把sqlmap当作注入测试的“第一把刀”
干渗透测试这一行,数据库注入是我个人认为“投入产出比”最高的一个测试方向。只要目标系统存在一个可利用的注入点,攻击者理论上可以拿到数据库的全部数据,严重的情况下还能通过数据库权限进一步打到操作系统层面。说得直白点,注入测试不只是“拿到几个数据表”的问题,它往往决定了整个内网测试能走多远。
而sqlmap,就是注入测试里绕不过去的一个工具。它是一款开源的自动化注入检测与利用工具,支持布尔盲注、时间盲注、报错注入、联合查询注入、堆叠注入等几乎全部主流注入方式,还能自动识别数据库类型。对于一个刚接触渗透测试的初学者来说,sqlmap帮你省掉的不是“写Payload”的时间,而是“构造Payload的思路验证”和“数据提取逻辑”这两块最琐碎的工作。
不过我也见过不少新人把sqlmap当成“一键拿数据”的黑盒工具,拿到一个URL就敲一条命令等着出结果,出了结果也不知道原理,没出结果也不知道怎么调。这其实很危险——工具越是自动化,你越得知道它在做什么、为什么这么做。这篇博文我会用DVWA、sqli-labs、pikachu这几个常见的本地靶场,带你从环境搭建、sqlmap安装开始,一路跑到完整的数据提取流程,再把我在实战中踩过的一些坑一并列出来。
所有操作都基于你在本地自己搭的靶场环境。没有授权,别对任何第三方系统跑sqlmap,这一点我后面还会反复强调。学工具是为了在规则内做测试,不是为了给自己找麻烦。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备:本地靶场怎么搭才顺手
2.1 DVWA靶场搭建:Docker最快,PHPStudy次之
DVWA(Damn Vulnerable Web Application)是最经典的 Web 漏洞靶场,自带 SQL Injection、XSS、文件上传等常见漏洞模块,而且每个模块都有 low、medium、high 三档安全级别,用来练习注入测试非常合适。
如果你机器上已经装了 Docker,搭建 DVWA 是我试过的最快路径,不用手动配 PHP 版本和扩展,几分钟就能跑起来。
bash复制docker pull vulnerables/web-dvwa
docker run -d -p 8080:80 --name dvwa vulnerables/web-dvwa
启动后浏览器访问 http://127.0.0.1:8080,默认账号 admin,密码 password。登录后需要点一下页面的 Create / Reset Database 按钮,初始化数据库,然后重新登录一次,就能进入靶场了。
如果你更习惯在自己已有的 Web 环境里跑,也可以用 PHPStudy 或 XAMPP 搭建 DVWA。这种方式适合想同时调试 PHP 代码、观察数据库交互的人。具体步骤很简单:下载 DVWA 源码放到 Web 根目录,用 phpMyAdmin 建一个 dvwa 数据库,复制 config/config.inc.php.dist 为 config.inc.php,填好数据库账号密码,访问首页初始化即可。
提示:DVWA 默认安全等级是 impossible,那个级别下注入测试基本体验不到多少乐趣。建议登录后进
DVWA Security页,把安全等级切到low,对初学者最友好。练习盲注或命令注入时再按需切到medium、high。
2.2 sqli-labs和pikachu这两个靶场怎么选
DVWA 适合系统性地练习,但它每个漏洞点就是一个页面,练完就没了。sqli-labs 和 pikachu 则是专门为注入、XSS 等 Web 漏洞设计的“题库式”靶场,各有各的优势。
sqli-labs 总共 65 个关卡,从最简单的数字型注入到报错注入、盲注、堆叠注入、二次注入、宽字节注入,每个关卡都对应一个特定的注入场景。它的好处是题目密度高,一关一关打下来,你会很自然地建立起“当前这条 Payload 适用于哪种注入类型”的判断力。很多人在学习时都会配合 sqlmap 去过关,实际效果比零散地看教程好得多。
pikachu 是另一个国内团队做的靶场,界面做得更友好,除了 SQL 注入,还覆盖了 RCE、文件包含、CSRF、XSS 等常见漏洞类型。它的注入模块里专门有“基于布尔的盲注”“基于时间的盲注”“宽字节注入”等细分场景,练手或者做演示都很不错。
我的建议是:想系统打注入基础,优先把 sqli-labs 过一遍;想扩展漏洞类型覆盖面,再去打 pikachu。两个靶场都不大,装在同一套 PHP 环境里也不冲突。
2.3 搭建后必须做的自检
靶场跑起来之后,先别急着上 sqlmap,我建议先做一轮快速自检,避免后面把时间浪费在环境问题上。
首先,确认靶场能正常访问,并确认你能
