php中一种单引号逃逸造成的注入
demo如下:
$post = $_POST;
$sql='';
$array['name'] = $post['name'];
$array['age'] = 18;
$array['addr'] = $post['addr'];
foreach($array as $k => $v){
$v = str_ireplace ("'","\'",$v);
$sql .= " $k = '$v',";
}
$sql = trim($sql, ',');
$sqli = "INSERT INTO `xxx` SET $sql";
echo $sqli;
乍一眼看好像不行,可控的$v使用了单引号包裹,而且在之前,专门还对',替换为了 \' ,说明开发者也意识到了这里注入的问题。
利用:
传入\'即可,会变成\\',导致单引号逃逸。
浙公网安备 33010602011771号