【问题标题】:PHP script is saying "invalid password" when I know it's correct当我知道它是正确的时,PHP 脚本说“密码无效”
【发布时间】:2019-07-24 20:53:52
【问题描述】:

我正在构建一个故意存在缺陷的应用程序,用于工作演示。它很容易展示不正当的做法,并可能鼓励那些利用它的人这样做。服务器上有充足的日志记录,因此我们能够看到人们何时四处闲逛。我只需要一个简单的登录页面,它使用PHP 脚本连接到SQL 数据库。我可以通过 SQL 服务器日志验证连接性,但是,当我知道我输入的密码和用户名正确时,脚本会返回并显示“密码无效”。

我尝试从其他资源/我所知道的交换代码位,我得到了internal error 500

// POST variables
$user=$_POST['user'];
$pass=$_POST['pass'];

// MD5 hash
//$pass=md5($pass);



$sql = "SELECT * FROM login WHERE user = '$user' AND pass = '$pass'";

// Query Login 
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

// Login validation
if(sqlsrv_has_rows($stmt)) {
header('Location: landing.html');
}
else {
echo "Wrong username or password!";
}

我希望连接能够正常工作,但它只是抛出了我的“错误的用户名或密码!”声明

【问题讨论】:

  • 如果数据库中的密码当前是经过哈希处理的,那么问题是提交的密码在与数据库中的密码进行比较之前没有经过哈希处理。
  • 您的代码容易受到 SQL 注入的攻击。您应该使用准备好的语句。
  • @Dharman 感谢您的 cmets,我将添加出口。至于漏洞,我完全清楚,这是故意的。
  • @Larnu 我认为 OP 没有说清楚,但他想展示安全漏洞和不良编程实践,而不是构建一个实际的可运行应用程序。
  • @Larnu 数据库不是真实的。我正在建立一个蜜罐。这是一个仅限内部的项目,旨在吸引有恶意的人。

标签: php html sql-server


【解决方案1】:

您的脚本编写方式不正确。要检查正确的用户名和密码,我不会检查是否有行。我知道这不是真的,它是为了显示糟糕的脚本/编码/等等,但这真的很糟糕。为什么它一直给你“错误的用户名或密码!”是因为没有返回行。尝试像这样重写你的脚本:

<?php

// Connect to Database Server
$server = "serverName\sqlexpress";
$connectionInfo = array("Database" => "dbName", "UID" => "username", "PWD" => "password");
$conn = sqlsrv_connect($server, $connectionInfo);

// POST variables
$user = $_POST['user'];
$pass = $_POST['pass'];

$query = 'SELECT * FROM login WHERE `user` = "' . $user . '" AND `pass` = "' . $pass . '"';

// Query Login
$statement = sqlsrv_query($conn, $query);

if ($statement) {
    $rows = sqlsrv_has_rows($statement);
    if ($rows === true && $rows >= 1) {
        header('Location: landing.html');
    } else {
        echo "Wrong username or password!";
    }
} else {
    die(print_r(sqlsrv_errors(), true));
}

【讨论】:

    猜你喜欢
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多