tu-ctf-2016:re-for-50-plz-50

孤街浪徒 提交于 2020-11-21 04:15:57

下载附件,在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}

 

解题完毕!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!