我正在尝试在我的本地主机上为安全测试项目创建的虚拟网站上执行 SQL 注入(inject)。
我尝试在用户名和密码字段中输入字符串 "OR "='
,因此它应该绕过它并显示 登录正确 - 但它却显示 登录失败
任何有助于理解 SQL 注入(inject)不起作用的原因
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('test');
if(isset($_POST['username'])&&isset($_POST['password'])){
$username =$_POST['username'];
$password = $_POST['password'];
echo $username;
echo $password;
if(!empty($username)&&!empty($password)){
$query ="SELECT id FROM users WHERE username = '$username' AND password = '$password'";
$query_run = mysql_query($query);
if(mysql_num_rows($query_run)>=1){
echo 'Login Correct';
}else{
echo 'Login Failed';
}
}
}
?>
<form action="test.php" method="POST">
Username: <input type="text" name="username">
Password: <input type="text" name="password">
<input type="submit" value="Submit">
</form>
最佳答案
你的注入(inject)字符串应该是这样的:
用户名和密码:
' or '1' = '1
用户名(通常)或密码:(这取决于查询中哪个排在第一位)#
注释查询的其余部分。
' or '1'='1' #
有关SQL注入(inject)的更多信息,您可以查看这个完美的网址:
The SQL Injection Knowledge Base
关于php - SQL注入(inject)无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58698822/