【象牙塔验证】ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞
ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件第1145行:protected function parseSql($sql,$parse) {// 分析表达式if(true === $parse) { $options = $this->_parseOptions(); $sql = $this->db->parseSql($sql,$options);}elseif(is_array($parse)){ // SQL预处理 $sql = vsprintf($sql,$parse);}else{ $sql = strtr($sql,array('__TABLE__'=>$this->getTableName(),'__PREFIX__'=>C('DB_PREFIX')));}$this->db->setModel($this->name);return $sql;}改为:protected function parseSql($sql,$parse) {// 分析表达式if(true === $parse) { $options = $this->_parseOptions(); $sql = $this->db->parseSql($sql,$options);}elseif(is_array($parse)){ // SQL预处理 $parse = array_map(array($this->db,'escapeString'),$parse);//此行为新增代码 $sql = vsprintf($sql,$parse);}else{ $sql = strtr($sql,array('__TABLE__'=>$this->getTableName(),'__PREFIX__'=>C('DB_PREFIX')));}$this->db->setModel($this->name);return $sql;}