比较有意思的几个漏洞挖掘记录
字数 1412 2025-08-19 12:41:28
SQL注入与漏洞挖掘实战教学文档
1. SQL注入漏洞分析与绕过技巧
1.1 基础发现
- 在数据详情接口中发现单引号导致报错,初步判断存在SQL注入漏洞
- 正常查询与异常查询返回不同响应(404 vs 500)
1.2 注入测试过程
- 常规注入测试:
1=1导致500错误- 正确SQL语句返回403
- 语法错误SQL返回500
- Oracle注入尝试:
'||55||'返回空数据'||1/0||'返回500错误
- 绕过尝试:
- 空白字符插入
- 分块传输
- 参数污染
- 垃圾数据
- 白名单绕过
- 高并发攻击
1.3 成功利用的IN关键字注入
- 有效Payload:
'OR+1+in+1+and+'a'+in+'a- 当条件为真时响应变慢
- 当条件为假时返回空数据
- 利用技巧:
- 判断用户长度:
'OR+1+in+length(user)+and+'a'+in+'a- 通过响应时间判断条件真假
- 使用INSTR函数获取用户名:
'OR+1+in+instr(user,'u')+and+'a'+in+'ainstr('user','u')返回1instr('user','s')返回2
- 判断用户长度:
2. 任意用户密码重置漏洞
2.1 漏洞发现
- 通过密码重置功能发现:
- 修改ID可重置不同用户密码
- Token参数可为空
2.2 利用步骤
- 通过申诉功能获取用户ID:
- 输入手机号可返回关联ID
- 获取目标手机号:
- 通过游戏APP的"忘记账号"功能
- 输入UID可获取部分手机号信息(前3位+后4位)
- 爆破完整手机号:
- 在官网找回密码处枚举中间位数
- 通过响应差异判断有效手机号
- 关联UID验证:
- 使用获取的手机号在游戏APP登录界面验证
- 匹配返回的UID确认目标账户
- 执行密码重置:
- 使用获取的ID和空Token重置密码
3. 某站测试记录与绕过技巧
3.1 子域名发现
- 爆破发现demo站点:
demo.atest.comdemo.btest.com
- IP限制绕过:
- 使用多种XFF头伪造IP:
X-Forwarded-For: 127.0.0.1 X-Real-IP: 127.0.0.1 True-Client-IP: 127.0.0.1
- 使用多种XFF头伪造IP:
3.2 后台接口发现
- 通过前端代码分析:
- 发现Webpack打包的接口信息
- 获取API路径和接口配置
- 爆破获取测试站凭证:
- 返回Token但无法直接登录
- 接口未授权访问:
- 携带测试站Token访问生产接口
- 修改Host头访问真实数据
4. 关键知识点总结
4.1 SQL注入高级技巧
- IN关键字在不使用括号时的特殊用法
- 基于响应时间的盲注技术
- 利用INSTR函数逐字符获取数据
4.2 密码重置漏洞利用链
- 信息碎片拼接(部分手机号+UID关联)
- 基于响应差异的枚举技术
- 参数篡改(ID替换+Token置空)
4.3 前端安全与接口安全
- Webpack打包信息泄露风险
- Host头篡改导致的越权访问
- 测试环境与生产环境的配置差异风险
4.4 IP限制绕过
- 多种XFF头的测试与利用
- 不同中间件/CDN对IP头的处理差异
5. 防御建议
5.1 针对SQL注入
- 使用参数化查询
- 实施严格的输入验证
- 统一错误处理机制
- 禁用详细的数据库错误信息
5.2 针对密码重置漏洞
- 使用不可预测的Token
- 实施严格的权限检查
- 限制密码重置尝试频率
- 敏感操作增加二次验证
5.3 针对接口安全
- 严格区分测试与生产环境
- 实施完善的认证机制
- 禁用前端敏感信息暴露
- 限制跨Host的请求
5.4 针对IP限制
- 使用可靠的IP获取方式
- 配置严格的源IP验证规则
- 限制代理头的影响范围