文章总结: 这篇文章介绍了CTFWeb模块中SQL注入的三种绕过技巧:关键字双写绕过、编码绕过和空格替换绕过。文章详细解释了每种技巧的原理、适用场景和实战Payload示例,并提供了一个CTF实战解题步骤和避坑指南。这些技巧可以帮助CTF参赛者绕过服务器防护机制,解决中等难度的SQL注入题目。文章还推荐了一个200节攻防视频教程作为进阶学习资源。
综合评分: 86
文章分类: CTF,WEB安全,渗透测试,漏洞分析
CTF Web 进阶:3 个 SQL 注入绕过技巧,搞定 80% 中等难度题
原创
点击关注👉
网络安全学习室
2025年12月7日 13:15
湖南
在 CTF Web 模块中,SQL 注入堪称 “得分王”—— 基础注入题占比 30% 以上,进阶题更是频繁出现 “绕过防护” 的考点。很多新手能搞定简单的联合查询注入,却在遇到 WAF 拦截、字符过滤时卡壳,错失高分。
本文结合 CTF 实战题型,拆解 3 个高频 SQL 注入绕过技巧,附实操 Payload 和解题思路,学会就能突破大部分中等难度的注入题,搭配 200 节攻防教程的专项讲解,轻松打通 Web 进阶之路!
一、先明确:CTF 中 SQL 注入的 “绕弯场景”
新手常遇到的注入瓶颈,本质是服务器加了防护机制,常见两种情况:
- 字符过滤:过滤
union、select、or等关键字,或'、"等闭合符号; - WAF 拦截:检测到恶意注入语句(如
union select)时,直接返回 403 或空白页。
CTF 中的绕过技巧,核心逻辑是 “变形注入语句,让防护机制识别不出,同时保证 SQL 语句正常执行”—— 不用死记硬背,理解原理就能灵活套用。
二、3 个高频绕过技巧(附 CTF 实战案例)
技巧 1:关键字双写绕过(应对 “关键字过滤”) 
原理 
服务器通常用正则匹配过滤关键字(如select),但只过滤一次。我们将关键字拆分成两段重复书写(如selselectect),服务器过滤中间的select后,剩余部分会拼接成完整的select,从而绕过检测。
适用场景 
CTF 中常见的 “关键字拦截” 题型,比如过滤union、select、and、or等核心注入关键字。
实战 Payload 示例(以 “联合查询注入” 为例) 
原始注入语句(被拦截):
双写绕过 Payload:
关键细节
- 重复部分要覆盖完整关键字,比如
union拆成uniunionon(中间包含union),而非uunionn; - 适用于过滤不彻底的场景,CTF 中 80% 的基础关键字过滤题都能这么解。
技巧 2:编码绕过(应对 “字符过滤 + WAF 拦截”) 
原理 
将注入语句中的关键字或符号进行 URL 编码、十六进制编码,服务器接收后会自动解码,而防护机制可能不会解码检测,从而绕过拦截。
适用场景 
过滤闭合符号(如'、")或关键字,且 WAF 对编码后的内容不识别。
实战 Payload 示例(以 “单引号闭合注入” 为例) 
原始注入语句('被过滤):
绕过方式 1:URL 编码('的 URL 编码为%27)
绕过方式 2:十六进制编码(查询 flag 时用十六进制代替字符串) 
比如要查询flag表的flag字段,将表名、字段名转十六进制(flag→0x666C6167):
关键细节
- URL 编码可多次编码(如
'→%27→%2527),应对多层过滤; - 十六进制编码无需加引号,直接拼接在 SQL 语句中即可。
技巧 3:空格替换绕过(应对 “空格过滤”) 
原理 
SQL 语句中,空格用于分隔关键字和参数,但服务器可能过滤空格。我们用其他字符替代空格,比如/**/(SQL 注释符,不影响语句执行)、+(URL 中+会被解析为空格)、%09(制表符)等。
适用场景 
过滤 SQL 语句中的空格,导致注入语句因缺少分隔而报错。
实战 Payload 示例(以 “猜列数” 为例) 
原始注入语句(空格被过滤):
绕过 Payload(用/**/替换空格):
其他替换方案: 
- 用
+替换(URL 中使用):?id=1' order+by+2# - 用制表符
%09替换:?id=1' order%09by%092#
关键细节 
/**/是万能替换符,几乎适用于所有 SQL 版本;- 若
/**/也被过滤,可尝试/*abc*/(中间加任意字符,服务器会忽略注释内容)。
三、CTF 实战解题步骤(以某 CTFshow 题目为例)
题目场景:?id=1,页面返回正常,尝试?id=1'报错,推测存在 SQL 注入,但输入union select后页面返回 403(关键字被拦截)。
解题流程 
- 验证注入点:用
?id=1%27(URL 编码绕过'过滤),页面报错,确认单引号闭合; - 绕过关键字过滤:用双写绕过
union select,构造?id=1%27 uniunionon selselectect 1,2#,页面返回正常,说明绕过成功; - 猜列数:
?id=1%27 uniunionon selselectect 1,2,3#,页面报错,?id=1%27 uniunionon selselectect 1,2#正常,确定列数为 2; - 爆 flag:
?id=1%27 uniunionon selselectect 1,flag from flag#,成功获取 flag。
四、避坑指南(CTF 新手常犯错误)
- 双写绕过只适用于 “单次过滤”:若服务器多次过滤(如过滤
select后,再检测剩余内容),双写会失效,需换编码绕过; - 编码绕过要注意 “解码环境”:URL 编码需在 URL 参数中使用,十六进制编码适用于表名、字段名,不能用于关键字;
- 优先尝试简单技巧:遇到注入题,先试双写、编码绕过,再尝试复杂的盲注,CTF 中中等难度题大多不用盲注。
五、进阶学习:200 节攻防视频教程助力突破
SQL 注入的绕过技巧远不止这 3 种 ——CTF 中还会遇到 “注释符绕过”“逻辑运算符替换”“盲注绕过” 等进阶场景,需要结合工具实操和大量刷题巩固。
为帮大家系统掌握 CTF Web 模块核心技术,我整理了「200 节网络攻防视频教程」,其中包含 SQL 注入全场景绕过、文件上传、XSS 等 Web 核心考点,从基础原理到 CTF 实战题精讲,每节都有实操演示,新手跟着练就能快速进阶。
领取方式:扫描下方二维码,即可直接获取「200 节网络攻防视频教程」,还能加入 CTF 技术交流群,获取更多 Payload 模板和解题思路!
最后:技术进阶的核心是 “实战 + 复盘”
CTF 中的 SQL 注入绕过技巧,不是靠死记硬背,而是靠 “理解原理 + 多练真题”。建议大家刷完 CTFHub、BUUCTF 的 SQL 注入进阶题,每道题尝试 2-3 种绕过方法,总结不同场景的适配技巧。
随着练习增多,你会发现:不管是关键字过滤还是 WAF 拦截,都有固定的绕过逻辑,而这些逻辑在 200 节教程中都有系统讲解。坚持 1-2 个月,Web 模块的中等难度题就能轻松拿下,成为你 CTF 参赛的 “得分利器”!
如果在练习中遇到具体题目卡壳,欢迎在评论区留言,一起交流解题思路~
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络安全学习室 点击关注👉《CTF Web 进阶:3 个 SQL 注入绕过技巧,搞定 80% 中等难度题》