关键信息总结 漏洞概述 漏洞类型: 缓冲区溢出 受影响系统: 警察局管理系统 (Police Station Management System) 供应商: Police Station Management System In C++ With Source Code - Source Code & Projects 漏洞文件 文件名: source.cpp 函数: 描述 问题: 在 函数中,由于使用了不安全的 函数读取用户输入的犯人ID,导致缓冲区溢出。 影响: 攻击者可以覆盖相邻内存位置,可能导致任意代码执行或程序崩溃。 漏洞代码片段 根因分析 1. 不安全函数使用: 使用了 函数,该函数不检查输入长度,已被弃用。 2. 固定大小缓冲区: 数组声明为固定大小 ,但 会写入超出数组大小的数据。 3. 无输入验证: 输入长度在存储到缓冲区前未进行验证。 4. 潜在影响: 攻击者可提供过长的犯人ID(超过9个字符加空终止符),覆盖相邻内存地址,修改函数返回地址或其他关键数据。 概念验证 (POC) 步骤: 1. 输入用户名和密码登录系统。 2. 选择 "3. DISPLAY RECORD" 选项。 3. 输入过长的犯人ID作为payload,触发栈溢出导致崩溃。 结果: 观察到 异常。