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

利用:

传入\'即可,会变成\\',导致单引号逃逸。

你可能感兴趣的:(php中一种单引号逃逸造成的注入)