[HDCTF2019]Maze(初识逆向)

news2024/10/6 22:22:46

下载附件解压,为了方便,我将文件名改为了maze.exe

一般我们先查壳,确实存在UPX壳

对于刚接触逆向的我,一键脱掉哈哈哈

不过还是要说一下,这种脱壳处理有可能会产生其它损坏或者影响,需要进行一定的修复

可以看到已经没壳了,我们尝试运行exe文件

大概意思是需要我们输入正确的东西来获取flag 

经过检查,这是一个32位程序

我们将文件用IDA打开,F5反编译发现没反应

观察程序停在的地方,这里的 jnz 指令会实现一个跳转,并且下面的0EC85D78Bh被标红了,应该是一个不存在的地址,这些东西就会导致IDA无法正常反汇编出原始代码,也称为花指令。

我们需要将它们Nop掉(即使用Nop指令将它们改为空,Nop的hex是90)

找到这个选项

我们需要从75一直Nop到58 

 OK之后这四行都成了空

 我们再找到这个选项

OK,居然直接成功了,我最开始将文件放在桌面似乎权限不够

(如果遇到权限不够的报错,尝试将文件放到D盘或者其他盘,不要放C盘)

 现在我们再使用IDA打开修改后的文件,便可F5反编译成功

 咦~ wsad 怎么看着这么眼熟,这不就是键盘上的上下左右吗

当你做逆向久了你就会知道,这其实是逆向的一种典型迷宫题

我们跟进上面的函数,找到了迷宫的内容

Format db '%14s' 是一个格式化字符串, %14s表示格式化一个字符串并占用14个字符的宽度

(可以理解为我们在迷宫里需要并且只能走十四步)

绿色框里的就是程序运行时会输出的内容

我们将迷宫内容导出,共有70个位置,这里我们猜它是10*7的迷宫

构造出迷宫的样子

def main():
    maze = "*******+********* ******    ****   ******* **F******    **************"
    sid = maze.index("+")
    eid = maze.index("F")
    ex,ey = -4,5
    c = (eid - ey) // (-ex)
    r = len(maze) // c
    print(r,c)
    for i in range(r):
        print(maze[c*i:c*(i+1)])

if __name__ == "__main__":
    main()

我们需要从+,经过14步,走到F 

关于这个图可能容易产生误解,这里说明一下:

这个+和F其实都是夹在*中间的,并且竖着的*之间是没有空留位置的,一个*即对应着一格

 可以等效为下图:

 

这里可以选择的路线不唯一,所以flag也应该是有多个的

下面给出两种可行的走法:

aasssssssswwww 或者 ssaaasaassdddw (w上s下a左d右,看你键盘)

都是可以的

 最终拿到flag

flag{aasssssssswwww} 或 flag{ssaaasaassdddw}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visio使用

1.Visio中字母上下标快捷键: 选中要成为上标的文字,ctrlshift"" 选中要成为下标的文字,ctrl"" 2.导入CAD文件 从 AutoCAD 版本 2007 到 2017 导入 .dwg 或 .dxf 文件。 3.编辑CAD文件 右键图形—CAD绘图对象—转换 选择高级 将默认选项改…

居安思危,测试员被裁了还能干什么?

2019年迎来了一大波大佬级公司裁员,包括了阿里、美团、知乎……。它们是各行业的独角兽公司,既是媒体关注的焦点,也是代表了行业风向的指针。 2019年的互联网,已经过了蓬勃发展期,接下来要迎接的更加平稳、规律的发展…

ECM能耗管理云平台

能源是企业运营中不可或缺的要素之一,直接影响企业的成本和竞争力。能源消耗和碳排放不断增长,对环境和可持续发展造成了严重影响。越来越多的企业开始关注并实施能耗管理云平台系统,以实现更高的能源效率、降低碳排放。 ECM能耗管理云平台系…

数分面试题:魔方涂色

问题:现在有一个正方体,现在有6种颜色,给正方体的每一面涂一种颜色,有多少种涂色方法。 注意!正方体是可以旋转的,如果旋转正方体之后,涂色效果和另一种涂色效果相同,那么算是一种涂…

车载开发月薪10k与30k的区别,就是CAN总线技术

CAN(Controller Area Network)总线是一种实时通信协议,是一种广泛应用于车载电子系统中的网络技术。CAN总线技术最初是由德国Bosch公司开发的,用于汽车电子控制系统(ECU)之间的通信,它能够在车辆…

Linux的shell脚本

Linux的shell脚本 😇博主简介:我是一名正在攻读研究生学位的人工智能专业学生,我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑,欢迎随时来交流哦!😄 ✨座右铭&…

Ai数字人浪潮来袭,超写实数字人系统出世,为企业打造定制化服务

数字人概念首次出现在80年代,最初在音乐领域应用,使用手绘技术进行生成。随着时间的推移,传统手绘被CG和动作捕捉等技术取代,从而使虚拟数字人的制作变得更加简化并降低成本。因此,虚拟数字人产业进入产业化探索阶段。…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了,那你直接把以前项目的依赖粘过来就行了: …

pytorch LBFGS

LBFGS pytorch的LBFGS也是一个优化器 但是与一般的优化器不同 平常我们的顺序是 losscriterion(predict, gt) optim.zero_grad() loss.backward() optim.step()而LBFGS是 def closure():optim.zero_grad()loss criterion(predict, gt)loss.backward()return lossoptim.step…

5.EFLK(ELK+filebeat)+filter过滤

文章目录 EFLK(ELKfilebeat)部署filebeat修改配置文件logstash配置 logstash的filter过滤grok(正则捕获插件)内置正则表达式调用自定义表达式 mutate(数据修改插件)重命名字段添加字段删除字段转换数据类型替换字段内容以"|"为分割符拆分数据成…

系统升级丨让VR全景制作简单再简单

最高端的VR全景 往往只需要最朴素的制作方式 酷雷曼3D VR数字化升级平台4.0版本 闪耀上线 全新的后台界面 丝滑的编辑工具 无需代码 不用建模 简单拖拉拽移 依然有手就行 轻松搭建VR元宇宙空间 1、界面升级,让VR创作更加可视 全新视觉设计 酷雷曼3D VR…

【必读】未来八大最具潜力行业!看懂就赚了

1 网络安全行业 现在保护“网络安全”已经成为世界各国的重要共识。有专家表示,未来网络安全行业有望超越金融、地产业成最赚钱行业。 2 动漫行业 我国的动漫产业才刚刚起步,现在全国各地如北京、上海、杭州、大连、深圳、广州等城市均建立起动漫产业…

2023年中总结:未到年末,立的Flag就已实现

前言 去年年末,搞了一篇年终总结,立了一个小小的Flag,2023年实现全网粉丝量突破1.5万,可以很负责任的告诉大家,截至到当前,不仅已经实现,而且超额完成,虽然这个量,很低&a…

【目标检测】基于yolov5的道路坑洼检测(附代码和数据集)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就…

《TCP/IP网络编程》第3,4章学习记录

基础知识: struct sockaddr_in {sa_family_t sin_family; //地址族(Address Family)uint16_t sin_port; //16位TCP/UDP端口号struct in_addr sin_addr; //32位IP地址char sin_zero[8]; //不使用 }sa_family_t包括: (1)AF_INET,IPv4网络协议…

【Linux】分布式监控 Zabbix

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Zabbix 介绍zabbix 概述Zabbix 监控原理Zabbix 6.0 新特性Zabbix 6.0 功能组件 Zabbix 6.0 部署Zabbix 添加客户端主机Zabbix 自定义监控内容Zabbix 自动发现与自动…

2.1、修改Gitea上传附件大小限制

目录 1. 修改Gitea配置2. 重启服务3. 使用 之前在Gitea上传附件时,显示大小超过3MB,不能符合我的使用场景。记录一下修改这个限制的配置。 1. 修改Gitea配置 默认在安装路径的custom/conf/app.ini文件中: 添加参数 [repository.upload] ; 是…

linux下cuda的安装

linux下cuda的安装 安装cuda11.1和pytorch1.8安装显卡驱动第一个报错第二个报错第三个错误屏幕不显示问题解决方案 安装cuda11.1 安装cuda11.1和pytorch1.8 通过上表可以发现,如果要使用CUDA11.1,那么需要将显卡的驱动更新至455.23或以上(Lin…

SpringBoot2+Vue2实战(十六)vue集成视频播放组件

修改文件上传大小限制 servlet:multipart:max-file-size: 100MBmax-request-size: 100MB Video.vue <template><div style"padding: 10px"><el-card><div v-for"item in videos" :key"item.id"style"margin: 10px 0…

走进Linux世界【二、VM与Linux安装】

第二章 VM与Linux安装 1、安装VMware ​ 这里安装Vm主要是为了安装Linux系统&#xff0c;除了相对云服务器&#xff0c;比较大众化的操作&#xff0c;当然更多的是熟悉Linux操作 1、Windows安装 ​ (1) 下载链接&#xff0c;目前版本上下载VM15的版本即可https://www.vmwar…