文章总结: 本文为CTFWeb模块系列第二期,聚焦SQL注入实战入门。文章用通俗语言解释SQL注入原理及前提,介绍报错、布尔和时间三种注入类型。重点演练报错注入的判断步骤与Payload构造,演示了BurpSuite抓包技巧。建议新手优先掌握报错注入并利用CTFshow靶场练习,为后续学习绕过技巧打好基础。 综合评分: 82 文章分类: CTF,WEB安全,漏洞POC,安全培训
CTF Web模块系列分享(二):SQL注入实战入门
原创
龙哥网络安全
龙哥网络安全
2025年12月27日 10:27 湖南
上期我们搭建了Web模块的基础框架。
今天咱们进入系列的第二期——SQL注入专题。为什么先讲它?因为在CTF Web模块里,SQL注入是出现频率最高、得分性价比最高的漏洞之一,堪称新手上分神器。很多比赛的Web签到题、基础题都是SQL注入,只要掌握核心思路,就能稳定拿分。
话不多说,咱们直接上干货!
一、先搞懂:什么是SQL注入?用大白话讲清楚
#
要理解SQL注入,先记住一个核心结论:因为开发者没对用户输入做过滤,导致用户输入的内容被当成数据库命令执行了。
我们用一个通俗的例子拆解:
假设你登录一个网站,输入用户名和密码后,网站后台会执行一条SQL语句(用来查询数据库里的用户信息),正常逻辑是这样的:
SELECT * FROM user WHERE username=’你输入的用户名’ AND password=’你输入的密码’。
如果开发者没过滤你的输入,你把用户名改成“admin’ OR ‘1’=’1”,密码随便输,这条SQL语句就会变成:
SELECT * FROM user WHERE username=’admin’ OR ‘1’=’1′ AND password=’随便输’。
而“’1’=’1’”永远是真的,所以这条语句会查询出所有用户信息,你不用正确密码就能登录——这就是最基础的SQL注入。
核心逻辑:把用户输入的“恶意内容”,拼接到原本的SQL语句里,改变语句的执行逻辑,从而获取数据库里的敏感信息(比如Flag)。
二、SQL注入的核心前提&常见类型
#
在解题前,我们先明确两个关键:
1. 注入成立的2个前提
- 用户能控制输入内容(比如登录框、搜索框、URL参数等)。
- 用户输入的内容被直接拼接到SQL语句中执行,没有做过滤或过滤不彻底。
2. 新手必懂的3种基础注入类型
CTF里的SQL注入题型很多,但新手先掌握这3种就够应对80%的基础题:
- 基于报错注入:执行恶意SQL语句后,数据库会直接返回错误信息,我们从错误信息里提取Flag(最容易上手,新手首选)。
- 基于布尔盲注:注入后页面没有错误信息,但会根据SQL语句的执行结果显示不同内容(比如“登录成功”/“登录失败”),我们通过判断“真/假”来一点点猜解信息。
- 基于时间盲注:页面没有任何反馈,但我们可以通过构造“延时语句”(比如让数据库等待3秒再响应),根据响应时间判断注入是否成功。
今天我们重点讲基于报错的注入——新手最容易掌握,解题效率最高。
三、实战演练:手把手教你解一道SQL注入签到题
#
我们用CTFshow新手场的一道SQL注入题为例,全程模拟解题过程,你跟着做就能学会!
1. 题目场景
打开题目链接,是一个简单的“查询页面”,输入ID后点击查询,页面会显示对应的数据(比如“ID:1,姓名:test”),我们的目标是通过注入获取数据库里的Flag。
2. 第一步:判断是否存在SQL注入
这是解题的核心第一步,我们通过构造“特殊输入”来测试:
- 先输入正常ID:1,页面显示正常数据 → 说明输入能被接收。
- 再输入:1’(在1后面加一个单引号),点击查询 → 页面出现数据库错误信息(比如“SQL syntax error”)。
出现错误,说明我们输入的单引号破坏了原本的SQL语句结构——这就证明了存在SQL注入漏洞!
3. 第二步:构造报错注入payload,获取Flag
既然存在注入,我们就构造恶意payload(攻击语句),让数据库返回错误信息的同时泄露Flag。
新手常用的报错payload有两种,直接记下来就能用:
- 方式1:1′ union select 1,2,flag from flag#(适用于MySQL数据库,假设Flag存在flag表的flag字段)。
- 方式2:1′ and extractvalue(1,concat(0x7e,(select flag from flag),0x7e))#(利用extractvalue函数报错,0x7e是“~”符号,用来区分Flag)。
我们把payload输入到查询框,点击查询——页面的错误信息里就会显示Flag(格式通常是flag{xxx}),复制下来就能完成解题!
3. 关键工具:Burp Suite的简单使用
如果输入框有长度限制,或者页面不显示输入内容,我们可以用Burp Suite抓包修改:
- 打开Burp Suite,设置浏览器代理。
- 在题目页面输入任意内容,点击查询,Burp会拦截到这个请求。
- 在Burp里找到“ID=xxx”的参数,把xxx改成我们的payload,点击“Forward”发送请求。
- 查看页面响应,就能找到Flag了。
四、新手避坑&学习建议
#
很多新手学SQL注入会遇到“一看就懂,一做就废”的问题,分享3个避坑技巧:
- 先记牢基础payload,但不要死记硬背——理解“为什么这个payload能生效”(比如单引号是用来闭合原本的SQL语句)。
- 优先练“基于报错的注入”,熟练后再学盲注(盲注更考验耐心,新手先拿稳简单分)。
- 推荐靶场:CTFshow新手场(SQL注入专题)、DVWA(低难度模式),先在靶场练熟再打比赛。
五、下期预告&福利时间
#
今天我们搞定了最基础的基于报错的SQL注入,下期我们将进阶——讲解SQL注入的绕过技巧(比如绕过空格过滤、单引号过滤)和联合查询注入,帮大家解决payload用不了的问题。
福利时间到!后台回复“学习”,获取新手必备资料:
- 1. 常用SQL注入payload清单(直接复制可用)。
- 2. Burp Suite抓包改包基础教程。
如果今天的内容对你有帮助,别忘了点赞、在看,转发给一起学CTF的小伙伴~
全套CTF学习资源,也可以在下面蓝色链接拿!
CTF学习资源,限时免费领取
想要的兄弟,关注我发送CTF入门,直接免费分享!前提是你得沉下心练,别拿了资料就吃灰,咱学技术,贵在坚持!
给大家准备了2套关于CTF的教程,一套是涵盖多个知识点的专题视频教程:
另一套是大佬们多年征战CTF赛事的实战经验,也是视频教程:
可以截图或者长按识别、扫码添加找我拿
龙哥网络安全
扫码添加领取
点击蓝字
关注我
计算机#计算机网安#网络安全#渗透测试#CTF#CTF比赛#赛事#计算机专业大学规划#网安零基础怎么入学#大学生
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:龙哥网络安全 龙哥网络安全《CTF Web模块系列分享(二):SQL注入实战入门》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论