积分插件购买负数漏洞修复
插件:
积分插件
tt_credits
说明:
用户可发布主题购买需支付货币为负值,其他用户购买后将从发布者账号扣除货币给到购买者账号,多账号可进行刷货币。
感谢:
此用户发现漏洞
username:root1
uid:1679
修复:
路径:/plugin/tt_credits/hook/post_update_post_end.php
说明:编辑或更新主题会调用
$content_num = param('content_num');//下面添加
if($content_num < 0 ){//判断购买主题货币值小于零
$content_num = 1;//小于零强制写为一
}
路径:/plugin/tt_credits/hook/thread_create_thread_end.php
说明:发布新主题会调用
$content_num = param('content_num');//下面添加
if($content_num < 0 ){//判断购买主题货币值小于零
$content_num = 1;//小于零强制写为一
}
路径:/plugin/tt_credits/hook/post_message_after.htm
说明:发布或修改主题或会调用
找到<input标签添加oninput,如下
oninput="if(!/^[0-9]+$/.test(value)) value=value.replace(/\D/g,'');if(value>100)value=100;if(value<0)value=null"
限制最小值为0,最大值为100
追溯:
在SQL中进行查询整个论坛是否还存在此类主题
SELECT tid,content_buy,content_buy_type FROM bbs_thread WHERE content_buy < 0
在SQL中进行查询之前利用此漏洞刷货币的用户
SELECT uid,num,code,credit_type FROM bbs_user_pay WHERE num < 0
提示:
不确定修复完成后无其他问题,建议设置定时站外备份