下载回来发现有两个文件,先看另一个文件
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505162933027-499297291.png)
一串数据,(我调整过了的哈不要在意这些细节)看不出有啥用。
依旧查壳:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505162701556-1195680219.png)
64位进IDA找主函数:
![](https://img2023.cnblogs.com/blog/3074711/202305/3074711-20230505162756531-984380248.png)
解释一下函数内容:大概是讲打开一个“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}收工。