我会简短地直接伸到点。
我正在测试我在下面制作的PHP代码上的SQLI登录旁路。
if(isset($_POST["login"]) && isset($_POST["password"])){
$sql="select * from users where login='{$_POST["login"]}' and password='{$_POST["password"]}'";
$result=mysqli_query($conn, $sql);
if(mysqli_num_rows($result) != 0)
echo "<h1>Login Success!</h1>";
else
echo "<h1>Invalid Login!</h1>";
}
我正在使用 admin' - 作为登录字段,以便在不输入密码的情况下成功绕过登录。
但是问题是它不起作用,但是当我尝试使用此 admin' - ' - 时,它起作用。
所以问题是该特定备忘单是如何以及为什么起作用的,而不是第一个备忘单?
this Admin' - ' - 有效,但 admin' -
这些是我输入这2个作弊表时的服务器端代码。
旁路不起作用。
$sql="select * from users where login='admin' --' and password='{$_POST["password"]}'";
有效的旁路。
$sql="select * from users where login='admin' -- ' --' and password='{$_POST["password"]}'";
只需要澄清或解释第一备忘单如何以及为什么不起作用,而是第二个备忘单。谢谢!
您的代码中有一些真实的语法错误:
首先:不要这样做: $sql="select * from users where login='{$_POST["login"]}' and password='{$_POST["password"]}'";
正确的方法是创建一个等于登录和密码值的变量。示例:
$login=$_POST['login'];
$password=$_POST['password'];
之后,您的查询应该看起来像这样:
$sql="select * from users where login='$login' and password='$password'";