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