1、题目
2、工具
- Exeinfo PE:查壳工具。
- IDA:是一款功能强大的反汇编工具,用于分析和逆向工程二进制文件。
- python:编写自动化脚本。
- base64在线解密网站:在线加密解密 - chahuo.com
3、方法
- 下载压缩包,解压得到一个.exe执行文件。
- 打开文件,提示输入flag。随便输入,自动退出。
- 用Exeinfo PE查询该文件是否加了壳。
- 发现这是一个32位的文件,并且没有壳。
- 使用32位的IDA将其打开。找到main函数,双击,按F5进行反汇编。
- 双击main_0函数。
- 这串的代码的意思是,将用户的输入存储在变量Str中,然后通过sub_4110BE函数处理字符串Str,并将结果存储在Dest中。然后对Dest进行遍历,对其中的每个字符的ASCII码值加上这个字符在字符串中的索引值,然后比较Dest和Str2,相等则输出right flag。所以只要对Str2进行反向处理就可以得到flag。
- 双击Str2。
- 把Str2的每一位的ASCII值减去其索引值。python脚本如下:
-
str2 = list("e3nifIH9b_C@n@dH") print(str2) for i in range(0, len(str2)):str2[i] = chr(ord(str2[i]) - i) # chr():ASCII码转字符;ord():字符转ASCII码 print(''.join(str2))
- 运行结果:
-
- 接下来就是要看sub_4110BE函数到底是怎么处理Str的。
- 双击sub_4110BE。
- 再双击sub_411AB0,其中a1是Str。
- 可以看到这里不断利用aAbcdefghijklmn数据对一些变量进行赋值。双击aAbcdefghijklmn。
- 很明显这是一个base64编码表,所以应该是对Str进行了base64加密。
- 双击sub_4110BE。
- 对e2lfbDB2ZV95b3V9使用base64解密。
- 在线base64解密网站:在线加密解密 - chahuo.com
- 最终获得flag{i_l0ve_you}。