[WUSTCTF2020]level1 1

发布时间 2023-05-05 16:45:34作者: TFOREVERY

下载回来发现有两个文件,先看另一个文件

一串数据,(我调整过了的哈不要在意这些细节)看不出有啥用。

依旧查壳:

64位进IDA找主函数:

解释一下函数内容:大概是讲打开一个“flag”的文件,读了一部分文件(flag没跑了),然后进行加密(奇数位一种加密,偶数位又是另一种加密)后输出。

输出(我们另一个文件就是output)那么是不是说这个文件就是加密后的flag,试试呗:上脚本:

int main(){
    long in[] = {0,198,232,816,200,1536,300,6144,
                 984,51200,570,92160,1200,565248,
                 756,1474560,800,6291456,1782,65536000,};
    string flag = "";
    for ( int i = 1; i <= 19; ++i )
    {
        if ( (i & 1) != 0 )
            flag += char(in[i] >> i);
        else
            flag += char(in[i] / i);
    }
    cout << flag << endl;
    return 0;
}

得到ctf2020{d9-dE6-20c},妥了昂flag{d9-dE6-20c}收工。