WriteUp
题目信息
名称:bbox.exe
分类:Reverse
描述:找到程序的flag
题目链接: https://pan.baidu.com/s/1u8bGbKcUF6_gLaw63L3jyA?pwd=h8r5 提取码: h8r5
解题思路
首先用DIE分析文件的结构,发现这是一个无壳的32位程序。
于是直接用32位IDA打开该文件进行反汇编,得到如下情况:
为方便阅读代码,将v13改为input,首先发现input需要满足63位长度,然后查看sub_401120函数,并将其初始化内容改为16进制,发现这是md5的标准幻数。
从而观察sub_401150, sub_401200函数,发现这分别是md5 update和final过程,最后将md5加密字符串和unk_403010内的字符串进行比对。于是,考虑将unk_403010对应数据提取出来,其数据为:
提取出来以后,将其进行md5解密,但是查询不到该解密结果。
于是考虑换一种思路,继续分析代码,发现flag的结果依赖于byte_403024,其数据为:
而该变量各位都对v3异或,并且v3是char类型,所以我们可以直接写脚本进行爆破。
首先可以利用LazyIDA插件提取出byte_403024的数据,得到如下结果:
[0x64, 0x00, 0x47, 0x47, 0x43, 0x04, 0x46, 0x50, 0x6B, 0x05, 0x47, 0x6B, 0x40, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x6B, 0x58, 0x04, 0x04, 0x53, 0x15]
然后编写如下脚本
爆破后发现如下字符串:
P4ssw0rd_1s_t00000000000000000000000000000000000000000000_l00g!
最后运行bbox.exe,得到最终flag
使用工具
工具链接: https://pan.baidu.com/s/1dzK8gcFjYEvnj_aA0UjBeQ?pwd=ry2d 提取码: ry2d
Flag
flag{P4ssw0rd_1s_t00000000000000000000000000000000000000000000_l00g!}
总结
通过本次题目学习到:
md5算法回顾
爆破思想
LazyIDA的使用