T00ls新年礼物之三:Phpcms V9 短消息回复SQL注入
modules/message/index.phpmysql.class.php
提示:
似乎非常鸡肋,没办法利用。。。
在某热心群众的帮助下,发现这个也是可以注入的,so 一点也不鸡肋
public function reply() {
if(isset($_POST['dosubmit'])) {
$messageid = intval($_POST['info']['replyid']);
//判断当前会员,是否可发,短消息.
$this->message_db->messagecheck($this->_userid);
//检查此消息是否有权限回复
$this->check_user($messageid,'to');
$_POST['info']['send_from_id'] = $this->_username;
$_POST['info']['message_time'] = SYS_TIME;
$_POST['info']['status'] = '1';
$_POST['info']['folder'] = 'inbox';
$_POST['info']['content'] = safe_replace($_POST['info']['content']);
$_POST['info']['subject'] = safe_replace($_POST['info']['subject']);
if(empty($_POST['info']['send_to_id'])) {
showmessage(L('user_noempty'),HTTP_REFERER);
}
$messageid = $this->message_db->insert($_POST['info'],true);//目测是直接遍历数据,然后key就是column val就是vaules插入。。如info[123']
if(!$messageid) return FALSE;
showmessage(L('operation_success'),HTTP_REFERER);
} else {
$show_validator = $show_scroll = $show_header = true;
include template('message', 'send');
}
}
public function insert($data, $table, $return_insert_id = false, $replace = false) {
if(!is_array( $data ) || $table == '' || count($data) == 0) {
return false;
}
$fielddata = array_keys($data);//不出所料
$valuedata = array_values($data);
array_walk($fielddata, array($this, 'add_special_char')); //但是处理过,似乎没啥办法注入,反正我是没想到
array_walk($valuedata, array($this, 'escape_string'));
$field = implode (',', $fielddata);
$value = implode (',', $valuedata);
$cmd = $replace ? 'REPLACE INTO' : 'INSERT INTO';
$sql = $cmd.' `'.$this->config['database'].'`.`'.$table.'`('.$field.') VALUES ('.$value.')';
$return = $this->execute($sql);
return $return_insert_id ? $this->insert_id() : $return;
}
public function add_special_char(&$value) {
if('*' == $value || false !== strpos($value, '(') || false !== strpos($value, '.') || false !== strpos ( $value, '`')) {
//不处理包含* 或者 使用了sql方法。
} else {
$value = '`'.trim($value).'`';
}
if (preg_match("/\b(select|insert|update|delete)\b/i", $value)) { //正则匹配,然后替换
$value = preg_replace("/\b(select|insert|update|delete)\b/i", '', $value);
}
return $value;
}
提示:
Unknown column '123\'' in 'field list'
似乎非常鸡肋,没办法利用。。。
在某热心群众的帮助下,发现这个也是可以注入的,so 一点也不鸡肋
评论39次
最恨加盐的md5,又不缺钙干嘛加盐
我一直想知道用的那个post发送的东西是火狐的插件还是什么工具?
主要还是破密码。这是个问题
洞主真多。新年到了,大家出来转转了。
黑阔 昨晚看给我留言 在车上 没有回复 这么快就发出来了。
谢谢楼主 楼主可以在深入挖掘
密码破不出。还是鸡肋
嗯,我看他的那个update函数大概就是这样,然后发现Mysql类里面几乎都这么写的。。然后 嘿嘿
楼主是根据birthday那个有感的吧?
不啊,这个早就有了啊。。
其实info[可以自己构造注入]
我草,大C,还可以这么玩? 你哪根神经想起来可以这么注
真强,,感谢共享..........
LZ牛逼,这个洞很大
洞主有出来了
膜拜洞主。。。
最近phpcms 漏洞很多。。大部分都是注入。。破密码是个问题
还有什么不能注入的,
膜拜洞主!!