博客
关于我
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/

你可能感兴趣的文章
RabbitMQ - 基于 SpringAMQP 带你实现五种消息队列模型
查看>>
php数组函数分析--array_column
查看>>
php数组去重复数据的小例子
查看>>
php数组实现:哈希 +双向链表
查看>>
PHP数组排序函数array_multisort()函数详解(二)
查看>>
php数组的几个函数和超全局变量
查看>>
PHP文件锁
查看>>
php文本框输入制定文本,php – 当用户没有向文本框输入任何内容时...
查看>>
PHP时间戳和日期相互转换操作总结
查看>>
php时间戳知识点,php 时间戳函数总结与示例
查看>>
php更新数据库失败,php – 无法更新MySQL数据库
查看>>
php机器人聊天对话框,基于AIML的PHP聊天机器人
查看>>
PHP查找数组中最大值与最小值
查看>>
php查最大值,在PHP数组中查找最大值
查看>>
php标签筛选,关于PHP CodeIgniter框架中通过<a>标签和url做多条件分类筛选
查看>>
php根据年月日计算年龄
查看>>
RabbitMQ - 单机部署(超详细)
查看>>
php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
查看>>
php模拟发送GET和POST请求
查看>>
RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo
查看>>