bugku之备份是个好习惯

题目地址

页面提示

d41d8cd98f00b204e9800998ecf8427ed41d8cd98f00b204e9800998ecf8427e

是由d41d8cd98f00b204e9800998ecf8427e重复组成,解密后得出的值是null

题目提示是备份
扫后台发现:
[图片]
大佬的工具链接

下载备份文件:

include_once "flag.php";  

使用include_once会在导入文件前先检测该文件是否在该页面的其他部分被应用过,如果有,则不会重复引用该文件,程序只能引用一次。(要导入的文件中存在一些自定义函数,那么如果在同一个程序中重复导入这个文件,在第二次导入时便会发生错误,因为php不允许相同名称的函数被重复声明)

ini_set("display_errors", 0);						//关闭错误提示信息
$str = strstr($_SERVER['REQUEST_URI'], '?');

$_SERVER[‘REQUEST_URI’] 取得当前URL的 路径地址 strstr()查找第一次?出现,并返回字符串的剩余部分

$str = substr($str,1);						//返回字符串的一部分(切割字符串,除去?返回字符串)
$str = str_replace('key','',$str);			//将字符串中的key字符串删除(即替换为空字符串)
parse_str($str);							//把查询字符串解析到变量中(将字符串的可能变量解析出来)
echo md5($key1);							//输出md5加密的key1变量
echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag."取得flag";
}
?>

网页给的提示就是没有参数传入时的MD5(null)的值

一:构造kekeyy,传入数组

md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
在这里插入图片描述

二:==漏洞

如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。

MD5值是0e开头的字符串:

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

在这里插入图片描述

### 构建游戏错误跟踪系统的概述 构建一个针对游戏开发的错误跟踪系统或 Bug 库是一项复杂而重要的任务。这种系统不仅能够帮助开发者高效地管理和解决游戏中存在的问题,还能显著提升整体的游戏质量与用户体验。 #### 1. 系统架构设计 为了实现高效的错误跟踪功能,可以采用分层的设计方法来定义整个系统的结构: - **核心模块** - 数据库:用于存储所有的 Bug 记录及其状态信息。数据库应支持灵活查询以便快速检索特定条件下的 Bugs[^1]。 - 用户界面(UI):提供给项目成员提交新 Bug 报告、查看现有报告并更新其进度的功能接口。 - **辅助组件** - 权限控制系统:确保只有授权人员才能访问敏感数据或者执行某些操作(比如关闭某个严重级别的 Bug)。 - 邮件通知服务:当有新的 Bug 被创建或是已有 Bug 的状态发生变化时自动发送邮件提醒相关人员。 #### 2. 功能需求分析 ##### a. 基础功能 - 创建、编辑和删除 Bug 描述; - 设置优先级(Priority),如高(High), 中(Medium),低(Low); - 定义状态(Status): 新(New), 已确认(Assigned), 正在处理(In Progress), 解决(Solved)/已验证(Closed); ##### b. 扩展特性建议 鉴于您提到的是关于 MMORPG 游戏环境中的应用案例,则可能还需要考虑如下额外要素: - 整合现有的日志框架,使得可以从 `LogManager` 或其他子系统直接导入发现的问题作为初始 Bug 提交项[^2]; - 支持多种类型的日志级别映射到不同的 Bug 类型上,例如将 ERROR 级别的日志转化为 Critical Priority 的 Bug; - 对于网络相关的 Issues (通过 NetworkLogs 捕捉的信息),应该特别标注出来,并允许附加详细的会话详情供进一步诊断使用; ```python class GameBugTracker: def __init__(self): self.bugs = [] def add_bug(self, title, description, priority="Medium", status="New"): bug_id = len(self.bugs)+1 new_bug = { 'id': bug_id, 'title': title, 'description': description, 'priority': priority, 'status': status } self.bugs.append(new_bug) def update_status(self, bug_id, new_status): for bug in self.bugs: if bug['id'] == bug_id: bug['status'] = new_status tracker = GameBugTracker() tracker.add_bug("Player Disconnect Issue","Players are disconnecting randomly during combat.", "High") print(tracker.bugs) ``` 上述代码片段展示了一个简单的 Python 实现方案,其中包含了基本的数据模型以及两个主要的操作函数——添加一个新的 Bug 和修改指定 ID 下面的状态字段值。 ### 结论 综上所述,在构建适用于游戏项目的 Bug Management System 过程当中,除了遵循常规的最佳实践之外,还应当紧密结合目标领域内的特殊需求来进行定制化调整。这包括但不限于充分利用既有的 Logging Infrastructure 并将其无缝嵌入至整体工作流之中.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值