【发布时间】:2019-02-16 05:35:35
【问题描述】:
这是我的 login.php 代码的 sn-p:
if (isset($_POST['login'])){
$username = $_POST['user'];
$password = $_POST['pass'];
$query = mysqli_query($con, "SELECT * FROM users WHERE password='$password' and username='$username'");
$row = mysqli_fetch_array($query);
if ($row > 0) {
$_SESSION['user_id']=$row['user_id'];
header('location:home.php');
} else {
echo 'Invalid Username and Password Combination';
}
}
?>
登录有效,但是当我尝试绕过身份验证/登录时 通过输入 ' 或 ''=' 会返回此错误
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\x\x\x\x.php on line 32
当我输入数据库中的有效用户时,登录有效: 样本
Username: admin
Password: admin
我想做的是通过输入(sql注入)绕过登录
Username: admin
Password: **' ANYTHING ''='**
但随后输入' ANYTHING ''='返回上述错误。
【问题讨论】:
-
两者,我如何修复这个错误,以便 sql 注入绕过将起作用。当我输入有效的用户名/密码时,登录有效,但当我输入 ' 或 ''=' 绕过登录时,它会返回该错误。
-
您能否编辑问题以准确显示您为
$username和$password使用的值? -
生成的字符串必须是语法上有效的 SQL 代码。您可以configure mysqli 显示/记录确切的解析错误。
标签: php sql security sql-injection