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

你可能感兴趣的文章
Python、IMAP 和 GMail.将消息标记为已查看
查看>>
python一个一个获取迭代器的元素
查看>>
python一维数组 提取_python – 如何从numpy中的1维数组中提取零维切片
查看>>
python三大库之--numpy(一)
查看>>
python三大库之--numpy(二)
查看>>
python上的字无效字符_标识中的无效字符
查看>>
python下用decode和encode 中文转码
查看>>
Python下调用Linux的Shell命令
查看>>
Python接口自动化测试实战系列
查看>>
python下载_安装_配置_以及第一行python程序---python工作笔记009
查看>>
Python不协调机器人消息.内容
查看>>
Python与C#之间内存共享互传信息
查看>>
python与c语言混合编程_你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!...
查看>>
python与excel
查看>>
Python与Excel的完美邂逅:深入浅出,手把手教你轻松玩转Excel数据操作
查看>>
python与flask_Python编程中flask的简介与简单使用
查看>>
python与图灵机器人交互(WXPY版本)
查看>>
python与运算符_python运算符
查看>>
python两个列表获取交集,并集,差集
查看>>
python两个字典合并,两个list合并
查看>>