### 简要描述: 删除lock之后可以重装系统 然后连接上自己搭建的mysql环境 重装后 。。。。然后就各种操作。 20140618 ### 详细说明: 在app/my_goods.app.php中 ``` function drop_image() { $id = empty($_GET['id']) ? 0 : intval($_GET['id']); $uploadedfile = $this->_uploadedfile_mod->get(array( 'conditions' => "f.file_id = '$id' AND f.store_id = '{$this->_store_id}'", 'join' => 'belongs_to_goodsimage', 'fields' => 'goods_image.image_url, goods_image.thumbnail, goods_image.image_id, f.file_id', )); if ($uploadedfile) { $this->_uploadedfile_mod->drop($id); if ($this->_image_mod->drop($uploadedfile['image_id'])) { // 删除文件 if (file_exists(ROOT_PATH . '/' . $uploadedfile['image_url'])) { @unlink(ROOT_PATH . '/' . $uploadedfile['image_url']); } if (file_exists(ROOT_PATH . '/' . $uploadedfile['thumbnail'])) { @unlink(ROOT_PATH . '/' . $uploadedfile['thumbnail']); } ``` ``` $uploadedfile = $this->_uploadedfile_mod->get(array( 'conditions' => "f.file_id = '$id' AND f.store_id = '{$this->_store_id}'", 'join' => 'belongs_to_goodsimage', 'fields' =>...
### 简要描述: 删除lock之后可以重装系统 然后连接上自己搭建的mysql环境 重装后 。。。。然后就各种操作。 20140618 ### 详细说明: 在app/my_goods.app.php中 ``` function drop_image() { $id = empty($_GET['id']) ? 0 : intval($_GET['id']); $uploadedfile = $this->_uploadedfile_mod->get(array( 'conditions' => "f.file_id = '$id' AND f.store_id = '{$this->_store_id}'", 'join' => 'belongs_to_goodsimage', 'fields' => 'goods_image.image_url, goods_image.thumbnail, goods_image.image_id, f.file_id', )); if ($uploadedfile) { $this->_uploadedfile_mod->drop($id); if ($this->_image_mod->drop($uploadedfile['image_id'])) { // 删除文件 if (file_exists(ROOT_PATH . '/' . $uploadedfile['image_url'])) { @unlink(ROOT_PATH . '/' . $uploadedfile['image_url']); } if (file_exists(ROOT_PATH . '/' . $uploadedfile['thumbnail'])) { @unlink(ROOT_PATH . '/' . $uploadedfile['thumbnail']); } ``` ``` $uploadedfile = $this->_uploadedfile_mod->get(array( 'conditions' => "f.file_id = '$id' AND f.store_id = '{$this->_store_id}'", 'join' => 'belongs_to_goodsimage', 'fields' => 'goods_image.image_url, goods_image.thumbnail, goods_image.image_id, f.file_id', ``` 这里查询出来后 然后就带入到了unlink当中 这里哪里入库呢? 首先注册一个会员 然后发布商品 然后 [<img src="https://images.seebug.org/upload/201407/181335178b07c97f2eb2bccac20645b9d71205f4.jpg" alt="e90.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201407/181335178b07c97f2eb2bccac20645b9d71205f4.jpg) 这里别去上传文件 直接在地址处这样写 然后入库 而且不会被重命名。 此时执行的语句 INSERT INTO ecm_goods_image(goods_id,image_url,thumbnail,sort_order,file_id) VALUES('1','data/install.lock','data/install.lock','255','0') 没有rename 然后在删除这个商品的时候 就触发了 @unlink(ROOT_PATH . '/' . $uploadedfile['image_url']); [<img src="https://images.seebug.org/upload/201407/18133838caa215f761cbb8702bb855577a327a0f.jpg" alt="e91.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201407/18133838caa215f761cbb8702bb855577a327a0f.jpg) [<img src="https://images.seebug.org/upload/201407/18133915b9949f90bd5a53c0531a0e9bb56ab4bd.jpg" alt="e92.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201407/18133915b9949f90bd5a53c0531a0e9bb56ab4bd.jpg) 因为 ``` if (file_exists(ROOT_PATH . '/' . $uploadedfile['image_url'])) { @unlink(ROOT_PATH . '/' . $uploadedfile['image_url']); } if (file_exists(ROOT_PATH . '/' . $uploadedfile['thumbnail'])) { @unlink(ROOT_PATH . '/' . $uploadedfile['thumbnail']); ``` 他这里unlink了两次 所以第一次unlink后 文件就不存在了 第二次unlink的时候就报错了 但是没影响 因为文件是已经删除了的。 然后直接重装 [<img src="https://images.seebug.org/upload/201407/18134115f6400ef5b601cbcd9ff2cba717315d33.jpg" alt="e93.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201407/18134115f6400ef5b601cbcd9ff2cba717315d33.jpg) 然后写自己的mysql环境就能重装 然后各种操作了。 ### 漏洞证明: 见上。