下载附件,在Linux中查看。
32位的MIPS平台文件,第一次遇到。
将文件在IDA32中打开。
IDA也提示为MIPS平台的文件。
找到主函数,查看代码。
皆为MIPS平台指令,有点蒙。
接下来可以选择在恶补MIPS指令,也可以安装IDA插件。
这里我选择安装插件。
插件官网:https://retdec.com/
插件和本体的下载地址。
github下载插件,并解压到IDA插件目录(X:\IDA_Pro_v7.0\plugins)里。
接下来安装retdec本体:
1、下载压缩包解压。
2、安装python 3.4版本以上。
3、下载安装所需的运行环境:Visual C++ Redistributable for Visual Studio 2015
4、在IDA中使用插件,并指定Retdec本体中的py文件。
接下来就可以在IDA反汇编MIPS指令了
反编译结果如下:
#include <stdint.h>
int32_t exit_funct(void);
int32_t print(void);
int main(int argc, char ** argv) {
for (int32_t i = 0; i < 31; i++) {
char v1 = *(char *)(i + (int32_t)"cbtcqLUBChERV[[Nh@_X^D]X_YPV[CJ");
char v2 = *(char *)(*(int32_t *)((int32_t)argv + 4) + i);
if ((int32_t)v1 != ((int32_t)v2 ^ 55)) {
print();
exit_funct();
}
}
exit_funct();
return 1;
}
一个简单的异或。
编写python脚本:
a = "cbtcqLUBChERV[[Nh@_X^D]X_YPV[CJ"
b = 0x37
c = ''
for i in a:
print(chr(ord(i)^b),end='')
输出:TUCTF{but_really_whoisjohngalt}
解题完毕!
来源:oschina
链接:https://my.oschina.net/u/4419355/blog/3452271