来源:自学PHP网 时间:2015-04-15 15:00 作者: 阅读:次
[导读] 搜了下,发现 app seller_groupbuy app php里面还有6处注入:分别是该文件下drop(),start(),finished(),desc(),cancel(),log()函数中的id参数以finished()为例:function finished() {...
|
搜了下,发现/app/seller_groupbuy.app.php里面还有6处注入:
分别是该文件下drop(),start(),finished(),desc(),cancel(),log()函数中的id参数
以finished()为例:
function finished()
{
$id = empty($_GET['id']) ? 0 : $_GET['id'];//id参数未过滤
if (!$id)
{
$this->show_warning('no_such_groupbuy');
return false;
}
if (!$this->_ican($id, ACT)) //进入_ican函数,跟进
{
$this->show_warning('Hacking Attempt');
return;
}
/* 团购信息 */
$group = $this->_groupbuy_mod->get(array(
'conditions' => 'group_id=' . $id,
'fields' => 'group_name',
));
if (!$this->_groupbuy_mod->edit($id, array('state' => GROUP_FINISHED, 'end_time' => gmtime())))
{
$this->show_warning($this->_groupbuy_mod->get_error());
return;
}
$content = get_msg('tobuyer_groupbuy_finished_notify', array('group_name' => $group['group_name'], 'id' => $id));
$this->_groupbuy_mod->sys_notice(
$id,
array('buyer'),
'',
$content,
array('msg')
);
$this->show_message('finished_ok');
}
_ican函数代码:
function _ican($id, $act = '')
{
$state_permission = array(
GROUP_PENDING => array('start', 'edit', 'drop'),
GROUP_ON => array('cancel', 'desc', 'log', 'finished', 'export_ubbcode'),
GROUP_END => array('cancel', 'desc', 'finished', 'log'),
GROUP_FINISHED => array('drop', 'log', 'view_order'),
GROUP_CANCELED => array('drop', 'log')
);
$group = $this->_groupbuy_mod->get(array(
'join' => 'belong_goods',
'conditions' => 'gb.group_id=' . $id . ' AND g.store_id=' . $this->_store_id,// id参数未过滤直接带入查询
'fields' => 'gb.state',
));
if (!$group)
{
return false; // 越权或没有该团购
}
if (empty($act))
{
return $state_permission[$group['state']]; // 返回该团购此状态时允许的操作
}
return in_array($act, $state_permission[$group['state']]) ? true : false; // 该团购此状态是否允许执行此操作
}
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com