当前位置:Gxlcms > 数据库问题 > ThinkPHP 3.1.3及之前的版本使用不当可造成SQLi

ThinkPHP 3.1.3及之前的版本使用不当可造成SQLi

时间:2021-07-01 10:21:17 帮助过:4人阅读

* * 解析SQL语句 * @access public * @param string $sql SQL指令 * @param boolean $parse 是否需要解析SQL * @return string */ 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; }

如果使用以下方式编写查询数据库代码,则会造成SQL注入。

$model=M(‘test‘);
$m=$model->query(‘select * from test where id="%s"‘,$_GET[‘id‘]);
dump($m);
die;

可提交以下请求造成SQLi

http://localhost/Main?id=foo" or 1="1

 

ThinkPHP 3.1.3及之前的版本使用不当可造成SQLi

标签:host   注入   printf   哈哈   nbsp   bool   表达   color   vsp   

人气教程排行