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使用了单引号包裹,而且在之前,专门还对',替换为了 \' ,说明开发者也意识到了这里注入的问题。
利用:
传入\'即可,会变成\\',导致单引号逃逸。