1. DVWA靶场与SQL注入基础
第一次接触DVWA靶场时,我被它精心设计的漏洞环境所吸引。这个专为安全学习打造的Web应用,将SQL注入漏洞按照难度分为四个等级,非常适合新手循序渐进地学习。记得当时在Low级别页面输入数字1时,页面正常显示了用户信息,而输入单引号后出现的数据库报错信息,立刻让我意识到这里存在典型的字符型注入漏洞。
SQL注入的本质是攻击者通过构造特殊输入,改变原有SQL查询的逻辑。就像我们平时在搜索引擎输入关键词一样,网站后端会将用户输入拼接到SQL语句中查询数据库。如果开发人员没有对输入进行严格过滤,攻击者就能像拼积木一样,通过单引号、注释符等特殊字符"拆解"原始SQL语句,再"拼接"上自己的恶意查询。
在DVWA的Low级别环境中,我们可以清晰地看到这个过程的每个细节:
- 输入
1' and 1=1#页面正常显示 - 输入
1' and 1=2#页面无数据显示
这种差异就像侦探破案时的关键线索,直接证明了注入点的存在。通过这种布尔型判断,我们不仅能确认漏洞,还能逐步获取数据库信息。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 手工注入实战:从探测到数据提取
2.1 注入点确认与闭合方式分析
刚开始手工注入时,我经常在闭合方式判断上栽跟头。在DVWA的Low级别中,输入2' and 1=1--+出现语法错误,而2' and 1=1#却能正常执行,这个细节告诉我们两点重要信息:第一,闭合字符是单引号;第二,这里的注释符是#而不是--。
这个过程就像开锁匠在试探锁芯结构:
- 先尝试最常用的万能钥匙(--注释)
- 发现不匹配后改用备用钥匙(#注释)
- 最终确认锁芯型号(单引号闭合)
2.2 联合查询的实战技巧
确定注入点后,联合查询(UNION SELECT)是最直接的数据获取方式。但新手常犯的错误是忘记让原查询失效。我最初直接使用1 union select 1,2时,页面只显示原查询结果,直到加上负号变成-1 union select 1,2才看到回显位。
获取回显位后,接下来的操作就像搭积木:
sql复制-1' union select 1,group_concat(schema_name) from information_schema.schemata#
这条语句能一次性列出所有数据库
