php - SQL注入(inject)无法正常工作

标签 php mysql sql sql-injection

我正在尝试在我的本地主机上为安全测试项目创建的虚拟网站上执行 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/

相关文章:

php - 一对多与mysql中的特定数字

php - laravel 在使用选择大小写和参数绑定(bind)时分页

mysql - SQL 排除 JOIN 查询 - 需要帮助

SQL Server IF EXISTS THEN 1 ELSE 2

sql - 是否可以在选择查询结果中包含表名

PHP CURL 登录和下载文件代码不起作用

mysql - 如何在MySQL中找到常见的项目并获取其单独的用户值?

mysql - 多次导出mysql相同的值

mysql - SQL INNER JOIN 返回的行比我需要的多

php - 我的数据库设计中的搜索会很慢吗?