为什么我不能使用mysql和php进行sql注入测试

| 我试图检查一个网站是否存在sql注入攻击,并惊讶地发现阻止它不是非常简单,因为下面是简单的代码。
$sql=\"select * from user_acount where login_id=\'\".$username.\"\' and password=\'\".$password.\"\' and status=\'1\' \";
我不能做任何SQL注入来测试它。我写了以下 第一次尝试检查SQL注入
Login:  admin\'--
Password:\'i typed nothing here \'
结果密码错误,无法登录。 第二名:
Login:  admin or 1=1 --\' 
Password:\'\'
结果密码错误,无法登录。 第三名:
Login:  admin\' or 1=1 
Password:\'\'
第四名:     登录名:admin或1 = 1 \'-     密码:\'\' 结果密码错误,无法登录。 谁能解释一下阻止我的原因吗?我没有使用准备好的语句,也没有使用任何过滤器类,也没有real_escape_string?     
已邀请:
        两种可能性: 没有ѭ4no和
admin
,因此查询如下:
select * from user_acount where login_id=\'admin\'
已启用“ 7”,导致查询如下:
select * from user_acount where login_id=\'admin\\\'--\' and password=\'\' and status=\'1\'
select * from user_acount where login_id=\'admin or 1=1 --\\\'\' and password=\'\' and status=\'1\'
即使关闭了魔术引号,最后一个查询也将始终失败:
select * from user_acount where login_id=\'admin or 1=1 --\'\' and password=\'\' and status=\'1\'
由于字符串中的“ 10”个注释不起作用,因此查询解释如下:
select * from user_acount where login_id=\'STRING\'\' and password=\'\' and status=\'1\'
如您所见,这将导致ѭ12之后的语法错误     
         魔术引号可能已打开(因此将自动处理用户输入,使其更适合组成数据库查询)。 Register Globals可能已关闭(因此,您必须使用
$_REQUEST[\'username\']
或相关名称而不是
$username
)。 您的程序中可能存在一个错误,该错误会阻止将输入“ 15”存储在“ 14”中(例如,表单元素名称与变量名称不匹配)。     
        您正在输入一个包含引号的密码。这会中断您的SQL查询,并且可能代码无法区分错误和合法的“没有这样的用户”结果,因此您会收到错误的密码消息。 尝试将密码留空。     
        您实际上并未调用
real_escape_string()
方法,但是我认为
magic_quotes_gpc
设置为true。   当magic_quotes启用时,所有\'   (单引号),\“(双引号),\\   (反斜杠)和NUL \   自动反斜杠。 运行时配置-magic_quotes_gpc     
        您是否尝试过:
Login:  admin\' or \'1=1  
Password: admin\' or \'1=1
还要检查魔术引号是否已打开     

要回复问题请先登录注册