)
你离“挖到第一个漏洞”可能只差15分钟。全文约1900字阅读约6分钟。今天带你从零到手亲自撕开一个SQL注入漏洞。一、为什么SQL注入是“漏洞之王”先给你看一组数据OWASP Top 102021版中SQL注入排名第三。2025年全年漏洞报告显示SQL注入相关漏洞依然占Web漏洞总数的17%以上。国内各大SRC平台SQL注入漏洞是提交量最大、奖金最稳定的漏洞类型之一。为什么它这么普遍因为太容易犯错了。想象一下你在网站上输入用户名和密码后台程序会拼成一句SQL命令去数据库里查——sqlSELECT * FROM users WHERE username 你输入的内容 AND password 你输入的密码问题来了如果开发人员偷懒直接把你的输入“粘”进SQL语句里没有做任何检查……那你输入的不是“张三”而是——sql OR 11整个SQL语句就变成了sqlSELECT * FROM users WHERE username OR 11 AND password OR 11因为11永远为真数据库把你当成了管理员直接放行。这就是SQL注入——通过构造恶意输入欺骗数据库执行非预期的命令。二、SQL注入的三大类型新手认清就行别被复杂的分类吓到你只需要知道三种最常见的类型特征难度联合查询注入页面有具体数据显示如商品列表、用户信息利用UNION拼接额外数据⭐⭐报错注入页面会显示数据库报错信息通过报错“带出”数据⭐⭐布尔盲注页面只返回“对”或“错”两种状态通过不断试错猜数据⭐⭐⭐新手入门首选联合查询注入——有回显、看得见、好理解。三、15分钟实战手撕一个SQL注入漏洞⚠️ 重要声明以下操作仅在DVWA靶场本地搭建中进行请勿对未授权的网站进行测试。 准备工作2分钟打开你的DVWA靶场如果还没装去百度搜“PHPStudyDVWA安装教程”5分钟搞定。把安全级别调到Low新手友好模式。点击左侧菜单的SQL Injection进入目标页面。你会看到一个输入框让你输入用户ID。这就是我们的靶子。 第一步找注入点2分钟先输入1回车。页面返回了ID1的用户信息First name: adminSurname: admin。再输入1数字1加一个单引号回车。关键来了如果页面报错或者返回的内容和之前不一样——恭喜你找到了注入点因为程序没有处理好这个单引号导致SQL语句语法错误暴露了它的“软肋”。 第二步确认注入类型2分钟输入1 and 11正常返回数据。输入1 and 12页面空白或返回异常。为什么因为11为真12为假。通过这种“逻辑测试”你确认了这里存在数字型注入漏洞。 第三步猜字段数量2分钟输入1 order by 1→ 正常输入1 order by 2→ 正常输入1 order by 3→ 报错这说明当前查询结果只有2列。知道了列数你才能用UNION去拼接你想要的数据。 第四步联合查询查数据库名3分钟输入sql1 union select database(), user()返回结果里你会看到两列一列是当前数据库名称比如dvwa一列是当前数据库用户名比如rootlocalhost。拿到数据库名了这就是你的第一个战利品。 第五步查表名、列名、最终拖数据5分钟继续输入sql1 union select table_name, null from information_schema.tables where table_schemadvwa你会看到所有表名其中有一张叫users的表——里面有账号密码再查users表的列名sql1 union select column_name, null from information_schema.columns where table_nameusers找到user和password两列最后执行sql1 union select user, password from users页面直接显示了所有用户的账号和密码哈希值。五步五分钟你搞定了人生第一个SQL注入漏洞。是不是比想象中简单四、新手必学的3种防御姿势只搞破坏不长久知道怎么攻更要懂怎么防。面试的时候面试官一定会问“你怎么防御SQL注入”① 使用参数化查询PreparedStatement这是最有效的防御手段——把SQL语句结构和参数分开传给数据库参数永远不会被当作“代码”执行。② 输入过滤与校验对用户输入做白名单过滤比如ID只允许数字就把非数字字符全部过滤掉。③ 最小权限原则数据库连接账号只用最低权限——只查一张表的权限就够了别用root。五、SQL注入学习资源包在线靶场不用搭环境打开即练SQLi-labsGitHub开源项目1-65关覆盖了几乎所有注入类型。PortSwigger Web Security AcademyBurp官方出的免费靶场有中文教程。BUUCTF国内CTF平台搜“SQL注入”标签有大量题目。学习建议先把手动注入练熟不用工具再学用Sqlmap自动化。手动能让你理解原理自动化只帮你提升效率。写在最后今天这篇文章我没有讲复杂的编码绕过没有讲WAF绕过只讲了最经典、最基础的SQL注入。因为对新手来说第一次成功的“从输入到出数据”的正向反馈比任何高阶技巧都重要。你现在回头看看那几个SQL语句是不是觉得没有想象中那么可怕漏洞挖掘的本质就是“让程序按照你的意图去做它不该做的事”。当你理解了这个核心逻辑你再看XSS、CSRF、文件上传漏洞会发现底层思路惊人地相似。今天的作业打开你的DVWA按上面五步走一遍把数据拖出来。然后把截图发到评论区我亲自给你点评。等你拿到第一个漏洞奖金的那天你会感谢今天动手了的自己。—— 手把手带你上路的网安教练下期预告第七弹·进阶篇——《XSS攻击完全指南从弹窗到盗取Cookie》。关注我不迷路。