SQL 注入:我无法绕过过滤器(stripslashes 和 mysql_real_escape_string)

问题描述 投票:0回答:1

我在绕过过滤器时遇到问题。

function filter($input) {
    if(get_magic_quotes_gpc())
        $input= stripslashes($input);
    $input = mysql_real_escape_string($input);
    return $input;
}

所以过滤器使用 stripslashes 和 mysql_real_escape_string 这使得注入变得困难

$id = $_GET['id'];
$id = filter($id);
$query = "select * from users where `id` = '$id' and 1=0 ;"; // for example
$result = mysql_query($query , $connection);

有没有办法绕过它。提前致谢。 👍

绕过 PHP 函数 stripslashes 和 mysql_real_escape_string 组合过滤器的解决方案。

php mysql sql-injection
1个回答
0
投票

我在网上看到很多文章/帖子讨论这个问题。

对于您的情况,不可能尝试使用您提供的确切代码执行SQL注入(我同意@yourcommonsense的评论)。

但是,许多专家指出,将 stripslashes 与 mysql_real_escape_string 一起使用来防止 SQL 注入攻击是危险的,因为编码人员在添加新代码/修改现有代码时很容易“意外”忘记使用此类过滤器。因此最好使用参数化准备好的语句进行切换

顺便说一句,不要使用 mysql_* 函数,它们已经过时了

© www.soinside.com 2019 - 2024. All rights reserved.