MariaDB环境下SQL注入的5种绕过姿势(以SWPUCTF赛题为例)

张开发
2026/4/18 0:52:42 15 分钟阅读

分享文章

MariaDB环境下SQL注入的5种绕过姿势(以SWPUCTF赛题为例)
MariaDB环境下SQL注入的5种高级绕过技术实战解析在网络安全攻防演练中SQL注入始终是最具威胁的漏洞类型之一。特别是在MariaDB这类流行的数据库环境中攻击者不断进化绕过技术而防御方也在持续升级WAF规则。本文将深入剖析五种实战验证过的WAF绕过技术结合典型CTF赛题场景为安全工程师提供攻防双向思维训练。1. 空格过滤与替代方案的艺术当WAF直接拦截空格字符时攻击者需要寻找替代方案来维持SQL语句的语法正确性。在MariaDB中/**/注释语法是最常用的空格替代方式但远非唯一选择。SELECT/**/1,2,database()--实际上MariaDB支持超过十种空白符变体%09水平制表符%0A换行符%0D回车符%0C换页符%A0不换行空格注意不同WAF对空白符的检测策略不同某些设备可能只检测标准空格(0x20)在实战中我们发现一个有趣的现象连续使用不同空白符组合往往能绕过基于正则表达式的检测SELECT%09%0A1,%0D2,database()%0C--2. 注释符的七十二变注释符在SQL注入中承担着截断后续语句的关键作用。当常见的#和--被过滤时需要了解MariaDB特有的注释方式注释类型语法示例URL编码形式井号注释SELECT 1#%23双破折号SELECT 1--%2D%2D内联注释/!SELECT/ 1无需编码特别值得注意的是MariaDB的特性注释语法它能在保持注释功能的同时执行特定版本以上的SQL/*!50530 SELECT*/ 1,2,3这个语句表示仅在MariaDB 5.5.30及以上版本执行SELECT操作这种特性常被用于绕过基础WAF规则。3. 等号运算符的替代方案当等号被加入黑名单时LIKE关键字是最直接的替代方案WHERE table_schema LIKE test_db但更隐蔽的替代方式包括使用REGEXP进行正则匹配利用STRCMP函数返回0的特性通过IN关键字进行包含判断WHERE STRCMP(table_schema,test_db)0 WHERE table_schema IN (test_db)在布尔盲注场景下还可以使用数学比较运算符WHERE (table_schemas)^(table_schemau)4. 逻辑运算符的变形记AND/OR被过滤时除了使用/||外MariaDB还支持多种替代写法标准写法替代方案说明A AND BA B标准替代A AND BA B位运算形式A AND BIF(A,B,0)条件函数在URL传输场景中需要特别注意编码转换-- 原始语句 WHERE 1 AND 11 -- URL编码后 ?param1%20%26%26%20115. 函数名混淆技术当关键函数如substr被过滤时可以考虑同功能函数替换MID替代SUBSTRSUBSTRING_INDEX按分隔符截取LEFT/RIGHT组合使用函数名拆分技巧CONCAT(SUB(STRING(1,1),1,1),a)十六进制编码函数名SELECT 0x737562737472(flag,1,1) FROM tbl在实战中我们曾遇到一个有趣的案例WAF过滤了所有已知的字符串截取函数最终通过数学函数实现了相同效果SELECT EXP(LOG(flag)) FROM tbl -- 通过指数对数运算保持原值防御策略的多层部署理解了攻击手法后防御方应当建立纵深防御体系输入验证层白名单验证所有输入参数对特殊字符进行严格过滤WAF规则层# 示例检测非常规空白符 re.search(r[\x09\x0A\x0D\x0C\xA0], input_string)数据库层使用预编译语句最小权限原则应用层实施速率限制部署行为分析在CTF比赛中这些绕过技术展示了安全防护的薄弱环节。实际企业环境中应当定期进行红蓝对抗演练测试WAF规则的有效性持续优化防御策略。

更多文章