[GDOUCTF 2023]doublegame wp

news/2025/3/13 11:33:39/文章来源:https://www.cnblogs.com/zzz26/p/18758368

一个游戏为贪吃蛇,另一个游戏maze
在string里面能够直接看到迷宫

点击查看代码
000000000000000000000
0 0 0 0     0     0 0
0 0 0 00000 00000 0 0
0 0               0 0
0 000 000 0 000 0 0 0
0 0     0 0 0   0 0 0
0 0 0 00000 000 000 0
0 0 0     0   0 0    
0 000 0 0 000 0 0 0 0
0     0 0 0 0 0 0 0 0
0 00000 000 000 0 0 0
0     0       0   0 0
000 0 0 0 000 0 0 0 0
0 0 0 0 0 0 * 0 0 0 0
0 0000000 0 000 00000
@       0 0         0
0 0 0 0 0 00000000000
0 0 0 0             0
000 0 00000 0 000 000
0         0 0   0   0
000000000000000000000
但是这里面有一个坑

虽然迷宫的地图已经出来了,但是下面还有一个v14[4] = '0';
所以真实的地图应该为

点击查看代码
000000000000000000000
0 0 0 0     0     0 0
0 0 0 00000 00000 0 0
0 0               0 0
0 000 000 0 000 0 0 0
0 0     0 0 0   0 0 0
0 0 0 00000 000 000 0
0 0 0     0   0 0    
0 000 0 0 000 0 0 0 0
0     0 0 0 0 0 0 0 0
0 00000 000 000 0 0 0
0     0       0   0 0
000 0 0 0 000 0 0 0 0
0 0 0 0 0 0 * 0 0 0 0
0 0000000 0 000 00000
@   0   0 0         0
0 0 0 0 0 00000000000
0 0 0 0             0
000 0 00000 0 000 000
0         0 0   0   0
000000000000000000000

从@走到*救出小猫,然后走到出口
路径脚本

点击查看代码
from collections import deque# 设置二维四向迷宫, 如果题目是多个小迷宫问题, 拆分多次调用脚本获取路径即可
# 每一排后面要逗号隔开,对齐++++++++++++++++++++++++++
maze = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],[1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1],[1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1],[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1],[1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1],[1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1],[1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],[1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1],[1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1],[1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1],[1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1],[1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1],[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1],
[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
path_len = 0x7fffffff  # 如果题目未给出终点坐标,则一定会指定路径的长度,在此处修改路径长度,否则请保留path_len的极大值
#已知步长时更改,否则不管+++++++++++++++++++++++++++++++++# 进行BFS寻找路径
def bfs(start, end, barrier):directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]  # 定义四个方向的移动for i in range(len(maze)):  # 获取起点和终点在列表中的索引for j in range(len(maze[i])):if (maze[i][j] == start):start = (i, j)if (maze[i][j] == end):end = (i, j)# 以下均是bfs算法套路queue = deque()queue.append((start, [start]))  # (当前位置, 路径)visited = set()visited.add(start)while queue:position, path = queue.popleft()if position == end:return pathelif len(path) == path_len:return pathfor d in directions:next_position = (position[0] + d[0], position[1] + d[1])if 0 <= next_position[0] < len(maze) and 0 <= next_position[1] < len(maze[0]) and \maze[next_position[0]][next_position[1]] != barrier and next_position not in visited:queue.append((next_position, path + [next_position]))visited.add(next_position)return None# 执行BFS搜索并打印结果
if __name__ == '__main__':#更改起点和终点的坐标,如果知道path而坐标未知则注释掉+++++++++++++++++++++++++++++maze[15][0] = 'S' #如果题目给了起点终点的坐标,在这里直接给起点和终点添加特征maze[7][20] = 'E'#前为横坐标,后为纵坐标path = bfs('S', 'E', 1)  # bfs函数传入参数代表起点、终点、障碍的特征(若题目给出的数据无特征, 手动添加特征即可, 通常障碍是1也有可能是0或其它字符如'#')print("移动路径坐标:", path)print("移动路径方位:{", end='')for i in range(1, len(path)):x1, y1, x2, y2 = path[i - 1][0], path[i - 1][1], path[i][0], path[i][1]if (x1 > x2):  # 上print("w", end='')elif (x1 < x2):  # 下print("s", end='')elif (y1 > y2):  # 左print("a", end='')elif (y1 < y2):  # 右print("d", end='')print('}')
路径为`dddssssddwwwwddssddwwwwwwddddssaassddddwwwwddwwwwddd`

maze下面有score的检验


异或

点击查看代码
print(0x1DC4 ^ 13376013)
#13371337
即score为13371337

flag格式为

HZCTF{md5(path)+score}

NSSCTF

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/895231.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React—12—ReactRouter

一、路由 ◼ 路由其实是网络工程中的一个术语:  在架构一个网络时,非常重要的两个设备就是路由器和交换机。  当然,目前在我们生活中路由器也是越来越被大家所熟知,因为我们生活中都会用到路由器:  事实上,路由器主要维护的是一个映射表;  映射表会决定数据的流…

如何将立创EDA/Altium Designer绘制的原理图导入/转换为Visio格式

相信各位写论文的学生在绘制论文电路图的时候都有苦恼,手绘太烦太累,在AD或立创EDA上已经绘制的又没有方便的导入软件 me too,直至今天找到一种非常方便的导入方式,除了拐角处有那么一丢丢缺陷其他感觉不错,下面予以介绍,顺便做个记录以防自己再忘了。 思路 PCB原理图的绘…

新版本将飞飞资源提取到unity中

旧版本方法:飞飞资源提取工具atools→3DMAX→unity 旧版文章链接:[Unity3D] 如何将飞飞游戏资源提取并加载到uinty3d中 - 伊凡晴天 - 博客园新版方法:飞飞资源提取工具atools→blender3.6→unity 新版方法视频:如何将飞飞游戏资源提取到unity中_哔哩哔哩_bilibili飞飞资源提取工…

电压转换模块

一、DCDC,LDO,电压基准的区别? DCDC电源转换电路可以承受大的压差,输出电流也比较大,带负载能力强,随随便便可以有几A的电流输出 DCDC即可以降压,还可以升压,而LDO只能降压。 LDO又叫线性稳压器,他的特点是输入电流和输出电流相当,这就造成了一个特别巨大的问题,就是…

多线程程序设计(二)——Immutable

本文摘要了《Java多线程设计模式》一书中提及的 Immutable 模式的适用场景,并针对书中例子(若干名称有微调)给出一份 C++ 参考实现及其 UML 逻辑图,也列出与之相关的模式。 ◆ 适用场景 多个线程在同时访问共享数据时,只需要读取数据而不必修改数据。 ◆ 解决方案 无需使用…

第三周第五天

所用时间:315分钟 代码量(行):197 博客量(篇):1 了解到的知识点: 1.完成了简单的安卓程序开发 通过springboot后端应用服务器将安卓程序插入到mysql数据库 程序页面如下:刚开始添加好一会儿都进不去,原来是服务器没弄好,服务器路径一定要搞好 我测试用的路径:url(&…

第二次作业-个人项目

第二次作业这个作业属于哪个课程 第二次作业这个作业要求在哪里 作业要求这个作业的目标 完成论文查重程序Github仓库地址 https://github.com/Simonysc-123/3123004761PSP2.1 Personal Software Process Stages 预估耗时(分钟 实际耗时(分钟)Planning 计划 10 15Estimate 估…

项目里如何引入阿里巴巴矢量图标库-iconfont

项目里如何引入阿里巴巴矢量图标库-iconfont 一、搜索或者直接选择自己想要的图标类型 二、选中想要的图标,加入购物车,可以选择多个 三、点击购物车可以将选择的图标加入原有项目,也可以新建项目 四、确定之后,选择下载至本地(下载后的图标是灰色的,没有颜色,若想有…

Qt个人项目总结 —— MySQL数据库查询与断言

3.Qt项目总结——数据库查询断言问题问题:当我使用MySQL数据库的查询操作时, 如果查询的数据在数据库中不存在,那么Qt会直接被干崩溃 但是?为什么呢?不应该是返回if语句中的结果吗,为什么会崩溃呢?bug代码示例 =======================================================…

Effective log parsing in log streams using fixed depth forest 论文笔记

挑战 主要讲的是 Drain 的一些问题: ① 对于变量开头的日志会存在解析错误 ② 常量在变量之前发生变化的日志也会导致解析错误 框架预处理 对于源日志,采用随机修改 token 的下标(即顺序)分成几个子日志,相当于数据增强 候选模版生成 这里采用的就是 Drain 的解析过程,为…