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

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

记一次被带入坑的逆向

拿到题目,发现是elf文件,拖入Linux运行程序,发现什么提示也不给,输入任意字符串,程序退出。

在这里插入图片描述

拖入64位的ida中,查找字符串,发现几个很有用的字符串,查看第三个字符串处的代码

在这里插入图片描述

先给了一大串数字,将类型转变成char[36]后如下图所示。分析伪代码发现函数名都是统一的sub_

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

进入第一个函数sub_4406E0,发现很难理解此函数是干嘛的,但通过主程序,我们可以猜测,该函数的作用应该是读取我们的输入。同理,根据if语句中的v15[i] ^ i) != v14[i],我们也可以猜测函数sub_424BA0是读取长度的。这样,continue前的逻辑就分析出来。

编写脚本,爆破出第一处的输入,脚本如下

v17=[0]*36v17[0] = 73v17[1] = 111v17[2] = 100v17[3] = 108v17[4] = 62v17[5] = 81v17[6] = 110v17[7] = 98v17[8] = 40v17[9] = 111v17[10] = 99v17[11] = 121v17[12] = 127v17[13] = 121v17[14] = 46v17[15] = 105v17[16] = 127v17[17] = 100v17[18] = 96v17[19] = 51v17[20] = 119v17[21] = 125v17[22] = 119v17[23] = 101v17[24] = 107v17[25] = 57v17[26] = 123v17[27] = 105v17[28] = 121v17[29] = 61v17[30] = 126v17[31] = 121v17[32] = 76v17[33] = 64v17[34] = 69v17[35] = 67flag1=[]for i in range(36):    for key in range(32,127):        if key ^ i == v17[i]:            flag1.append(chr(key))print(''.join(flag1))

爆破出的结果是Info:The first four chars are `flag`

继续分析剩下的逻辑,我们进入sub_400E44函数中,唉,又是难以理解的代码但是我们发现一串很长的字符串,包含了所有的英文字母和数字还有其他字符,每当看到这样的字符串时,我们就可以猜测,这是进行了一次base64编码。base64的编码原理可以参考

在这里插入图片描述

我们发现,这个函数被调用了十次,也就是说进行了十次base64的编码。编码后的结果和off_6CC090比较(猜测sub_400360是strcmp函数),将这一大串字符串,进行十次base64解码,得到的结果是一个。

在这里插入图片描述在这里插入图片描述

进入网站看一下,发现内容是主动防御,就感觉自己被骗了,这根本就没有flag。看来出题者是想现教现学啊。 被带入坑后,我们需要其他的线索,联想到第一个提示信息,说前四个字符是’flag’。同时,我们可以发现在那一大串base64编码的字符串下,还有一组数据,进入其函数查看。

在这里插入图片描述

发现此函数的逻辑就是将byte_6CC0A0字符串进行异或,还可以发现if语句中,有判断是否等于‘f’和‘g’的条件,根据已有信息猜测这个字符数组就是‘flag’。为什么v2会是一个数组呢,因为HIBYTE()函数的作用是获取高字节也就是数组的最后一位,同时还有BYTE()、BYTE1()、BYTE2()第一个是获取数组的第一位,第二个就是获取第二位,依次类推。

在这里插入图片描述

编写脚本,将v2和flag爆破出来。脚本如下

key2=[0x40,0x35,0x20,0x56,0x5D,0x18,0x22,0x45,0x17,0x2F,0x24,0x6E,0x62,0x3C,0x27,0x54,0x48,0x6C,0x24,0x6E,0x72,0x3C,0x32,0x45,0x5B]key3='flag'key4=[]flag=[]for x in range(4):    key4.append(chr(key2[x] ^ ord(key3[x])))print(key4)for i in range(25):    flag.append(chr(key2[i]^ord(key4[i%4])))print(''.join(flag))

得到的flag为flag{Act1ve_Defen5e_Test}

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

你可能感兴趣的文章
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_实际操作_02---大数据之Nifi工作笔记0032
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_02---大数据之Nifi工作笔记0034
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>