常规查壳
无壳 64位 ELF文件
用IDA64打开
迅速的找到flag处
看到一个time 函数和rand 函数 猜是用于产生随机数的
后面的switch语句中 只有case 1;case 4;case 5;有用
看来只用按正确的顺序运行flag才能出现
盲猜顺序是 4 5 1
在case 4:
发现s是long long 类型(int 64),但是根据我们的观察 s 应该为char类型
这里因该是IDA识别错误了
需要我们将其更改回字符型
但此时就回遇到大端和小端的问题
因此我们需要将字符逆序存放才是正确的
转换后 "icug`of\x7F"
主要难点了解后 开始写脚本
#include<iostream>
using namespace std;
int main()
{char f1[]="GXY{do_not_";char f2[]="icug`of\x7F";for ( int j = 0; j <= 7; ++j ){if ( j % 2 == 1 )f2[j] -= 2;else--f2[j];}puts(f1);puts(f2);return 0;
}
所以flag为
flag{do_not_hate_me}