上期我们搭建了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注入的核心前提&常见类型
在解题前,我们先明确两个关键:
注入成立的2个前提
用户能控制输入内容(比如登录框、搜索框、URL参数等)。
用户输入的内容被直接拼接到SQL语句中执行,没有做过滤或过滤不彻底。新手必懂的3种基础注入类型
CTF里的SQL注入题型很多,但新手先掌握这3种就够应对80%的基础题:
基于报错注入:执行恶意SQL语句后,数据库会直接返回错误信息,我们从错误信息里提取Flag(最容易上手,新手首选)。
基于布尔盲注:注入后页面没有错误信息,但会根据SQL语句的执行结果显示不同内容(比如“登录成功”/“登录失败”),我们通过判断“真/假”来一点点猜解信息。
基于时间盲注:页面没有任何反馈,但我们可以通过构造“延时语句”(比如让数据库等待3秒再响应),根据响应时间判断注入是否成功。
今天我们重点讲基于报错的注入——新手最容易掌握,解题效率最高。
三、实战演练:手把手教你解一道SQL注入签到题
我们用CTFshow新手场的一道SQL注入题为例,全程模拟解题过程,你跟着做就能学会!
题目场景
打开题目链接,是一个简单的“查询页面”,输入ID后点击查询,页面会显示对应的数据(比如“ID:1,姓名:test”),我们的目标是通过注入获取数据库里的Flag。第一步:判断是否存在SQL注入
这是解题的核心第一步,我们通过构造“特殊输入”来测试:
先输入正常ID:1,页面显示正常数据 → 说明输入能被接收。
再输入:1’(在1后面加一个单引号),点击查询 → 页面出现数据库错误信息(比如“SQL syntax error”)。
出现错误,说明我们输入的单引号破坏了原本的SQL语句结构——这就证明了存在SQL注入漏洞!第二步:构造报错注入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}),复制下来就能完成解题!
- 关键工具: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用不了的问题。
福利时间到!后台回复“学习”,获取新手必备资料:
常用SQL注入payload清单(直接复制可用)。
Burp Suite抓包改包基础教程。
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,100多本网安电子书,最新学习路线图和工具安装包都有,不用担心学不全。
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源