出现在sql处理函数上
看到iwebshop4.1/lib/web/model/model_class.php
看到这里只是把值转小写然后=='all' php是弱类型所以 xxxxx和all用==比较的值是一样为1的,所以值就为' WHERE '.$where;可以看到没有单引号包含
最后拼接sql语句然后带入查询
原因出现在这里
存在数组里就$updateStr.= '`'.$key.'` = '.$val; 所以没有单引号包含
我们来搜索下有哪里调用了

数量还挺多的
选了一处来测试
/controllers/member.php
$id = IFilter::act(IReq::get('id'));这里没有过滤转换类型就传入了
$sellerObj->update("id = ".$id);最后带入了查询

可以看到带入sql语句了

而且没有单引号也不用担心gpc
出现在sql处理函数上
看到iwebshop4.1/lib/web/model/model_class.php
看到这里只是把值转小写然后=='all' php是弱类型所以 xxxxx和all用==比较的值是一样为1的,所以值就为' WHERE '.$where;可以看到没有单引号包含
最后拼接sql语句然后带入查询
原因出现在这里
存在数组里就$updateStr.= '`'.$key.'` = '.$val; 所以没有单引号包含
我们来搜索下有哪里调用了

数量还挺多的
选了一处来测试
/controllers/member.php
$id = IFilter::act(IReq::get('id'));这里没有过滤转换类型就传入了
$sellerObj->update("id = ".$id);最后带入了查询

可以看到带入sql语句了

而且没有单引号也不用担心gpc
厂商回应:
危害等级:低
漏洞Rank:3
确认时间:2015-10-31 21:35
厂商回复:
1,处理思路不应该从IModel的update value强制加引号,这样会导致部分mysql函数的值无法写入,比如: update iwebshop_goods set time=NOW(); 如果按照写入值强制引号的思路,那么sql就变成了: update iwebshop_goods set time="NOW()"; 解决的方式还是应该在IReq::get('参数'); 通过不同的数据类型进行不同的转换。
2,测试报告里面的用例都是后台专用的控制器和方法,必须具有管理员的权限,意义不是很大。
最新状态:
暂无