【DVWA实战】——Low级别SQL注入:从手工探测到自动化利用全解析

张开发
2026/4/8 0:10:48 15 分钟阅读

分享文章

【DVWA实战】——Low级别SQL注入:从手工探测到自动化利用全解析
1. 环境准备与基础配置第一次接触DVWA这个靶场时我花了整整一个下午才把环境跑通。这里给新手朋友分享几个避坑要点首先确保你的PHP版本在5.4到7.4之间太高版本会报错MySQL建议用5.x版本。安装完成后别急着操作记得在DVWA Security页面把安全级别调到Low这个选项藏得比较深在左侧菜单最下方。配置时常见的问题就是数据库连接失败我遇到三次里有两次都是config.inc.php文件权限问题。建议用以下命令修改权限chmod 755 /var/www/html/dvwa/config2. Low级别漏洞原理深度解析很多人以为SQL注入就是简单的单引号攻击其实背后的原理很有意思。DVWA Low级别的漏洞代码就像个不设防的保险箱$id $_REQUEST[id]; $query SELECT first_name, last_name FROM users WHERE user_id $id;这种直接拼接SQL语句的方式相当于把家门钥匙插在锁上。我做过实验哪怕只是输入1 and 11这种基础payload就能绕过大部分简单验证。特别要注意的是字符型注入和数字型注入的区别。DVWA这个案例是典型的字符型注入所以要用单引号闭合。如果是数字型的payload构造方式会完全不同。曾经有个项目我花了三小时才发现这个区别血泪教训啊。3. 手工注入七步实战3.1 注入点探测的艺术新手最容易犯的错误就是盲目输入单引号。我建议先用1测试后立即跟一个1两个单引号验证。如果后者能正常返回说明可能存在过滤机制。在DVWA的Low级别下你会看到经典的报错信息You have an error in your SQL syntax...这个报错就像黑客的GPS直接告诉我们系统存在漏洞。3.2 字段数判断的骚操作ORDER BY是最优雅的字段探测方式但有个小技巧可以先从ORDER BY 10开始二分查找。比如1 ORDER BY 10 # → 报错 1 ORDER BY 5 # → 报错 1 ORDER BY 3 # → 报错 1 ORDER BY 2 # → 正常这样效率比逐个尝试高得多。记得在真实环境中这个步骤要控制请求频率太频繁可能触发WAF。4. 数据库信息收割指南4.1 元数据提取实战information_schema是MySQL的藏宝图但新手容易写错复杂的group_concat语句。这里分享我的万能模板1 UNION SELECT 1,group_concat(column_name SEPARATOR |) FROM information_schema.columns WHERE table_nameusers #SEPARATOR参数特别实用当字段内容包含逗号时能避免解析混乱。有次渗透测试中这个技巧帮我节省了至少两小时。4.2 数据拖取进阶技巧获取到users表结构后别急着拖全部数据。先查count(*)确定数据量1 UNION SELECT 1,count(*) FROM users #大表直接拖取可能引发警报。我一般会加limit分批获取比如1 UNION SELECT user,password FROM users LIMIT 0,5 #5. sqlmap自动化实战5.1 请求捕获的细节用Burp抓包时很多人会漏掉Cookie里的security字段。完整的请求应该像这样GET /vulnerabilities/sqli/?id1SubmitSubmit HTTP/1.1 Host: localhost Cookie: PHPSESSIDabc123; securitylow保存为txt文件时我习惯用-r参数加载比直接-u更可靠。5.2 智能参数搭配sqlmap的--level和--risk参数不是越高越好。对于DVWA Low级别这样用就够sqlmap -r request.txt --batch --dbs --techniqueBEUBEU表示先尝试布尔盲注再错误注入最后联合查询。实测这个组合速度最快还不容易把靶机搞崩。6. 防御方案深度剖析预处理语句不是简单的把问号塞进SQL就行。正确的PDO写法要注意三点禁用模拟预处理$pdo-setAttribute(PDO::ATTR_EMULATE_PREPARES, false)错误模式设为异常$pdo-setAttribute(PDO::ERRMODE_EXCEPTION)绑定参数时指定类型$stmt-bindValue(1, $id, PDO::PARAM_INT)有次代码审计发现开发者虽然用了PDO但开着模拟预处理导致注入依然可行。这种细节往往决定防御的成败。7. 从Low到Impossible的进化之路DVWA各个级别的防护差异很有意思。Low级别就像敞开的门Medium级别加了把挂锁mysql_real_escape_stringHigh级别装了防盗门tokenlimitImpossible级别则是银行金库预处理CSRF防护。建议新手按照这个路线进阶练习先在Low级别掌握基础注入流程到Medium级别练习十六进制编码绕过在High级别研究时间盲注最后尝试在Impossible级别寻找逻辑漏洞记得第一次成功绕过High级别的token防护时那种成就感比中彩票还强烈。不过要提醒的是真实环境中的防护往往比Impossible级别更复杂切莫把靶场经验直接套用到生产环境。

更多文章