博客
关于我
2019 红帽杯 easyRE
阅读量:681 次
发布时间:2019-03-17

本文共 779 字,大约阅读时间需要 2 分钟。

按照线索分析,我发现进程中的关键函数名称均以“sub_”开头,这表明程序的核心逻辑主要集中在这些子函数中。通过调试,我观察到程序对用户输入的处理逻辑较为复杂,它涉及到一系列的字节操作和条件判断。

首先,我分析出函数sub_4406E0可能是用于处理用户输入的数据的。这些调用中包含了多个条件判断,尤其是关于数组v15和v14的异或操作:if(v15[i] ^ i) != v14[i])。通过观察这些条件判断的逻辑,我可以推测v15数组中的元素是一个与索引异或后的值,可能与输入的长度相关。

随后,我发现程序中有一个长度为36的字节数组v17,数组中的每个元素被赋予了特定的字节值(如0x73,0x6F,0x6C等)。结合这些字节值与ASCII字符码的映射关系,我猜测v17数组中的每个元素对应的是空格、f、l、a、g这四个字母,基于用户提示中提到的“flag”的信息。通过将这些字节值转换为对应的字符,确实得到了“flag”的提示。

接下来,我注意到程序中存在一段经过Base64编码的字符串。通过分析编码原理,我逐步解码这串数据,最终得到了原文内容。基于这些初步的发现,我可以进一步分析程序的调用链,寻找与获取.flag相关的函数调用。

在进一步的调试中,我发现程序中存在多个子函数,特别是sub_400E44函数,这个函数被多次调用,并且处理的是一个长度为25的字节数组。通过逆向逻辑推理,我可以推测这个数组是用来存储一个加密后的密文,而多次调用sub_400E44函数可能是为了移除某种加密保护。

最终,我在sub_400360函数中发现了一个关键的数组解析逻辑。这是一个字节级数组,该数组中的每个元素经过了高低字节的异或运算。通过解析这个逻辑,我发现数组中的元素构成了“flag{Act1ve_Defen5e_Test}”这一完整的flag字符串。

转载地址:http://dxgqz.baihongyu.com/

你可能感兴趣的文章
printf的格式控制字符串
查看>>
PrintStream概述
查看>>
Prismix:Prisma 架构混合器,为复杂项目而生
查看>>
pritunl服务安装及配置
查看>>
Private Destructor
查看>>
private和protected能同时修饰成员变量吗_天天用注解你了解注解是怎么实现的吗?...
查看>>
privoxy Invalid header received from client.
查看>>
Privoxy代码下载
查看>>
Probabilistic-Programming-and-Bayesian-Methods-for-Hackers
查看>>
pytorch中的求和函数sum(axis=x)解释
查看>>
Problem F: 质心算法
查看>>
Problem N HDU 2612 Find a way (两次BFS求最值)
查看>>
Process /usr/libexec/gdu-notification-daemon was killed by signal 6 (SIGABRT)
查看>>
process.env.VUE_APP_BASE_API 获取不到
查看>>
Process.run() 和 Process.start() 之间的区别
查看>>
Processes
查看>>
Processing通过编程实现艺术设计_实现艺术和现实的交互---数据设计分析002
查看>>
ProcessOnLoading
查看>>
SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成
查看>>
PROFINET 模拟器使用教程
查看>>