1.查看位数
2.ida打开,找到主函数
程序逻辑是对flag保存的字符串加密输出
3.脚本
#include <stdio.h>
#include <string.h>
int main()
{
unsigned int arr[21] = { 0, 198,232,816,200,1536,300,6144,984,51200,570,92160,1200,565248,756,1474560,800,6291456,1782,65536000,0};
//a[0]补0保证正常循环,末尾补0保证正常输出
char c;
for (unsigned int i = 1; i <= 19; i++)
{
if ((i & 1) != 0)
c = (unsigned int)(arr[i] >> i);
else
c = (unsigned int)(arr[i] / i);
putchar(c);
}
return 0;
}
4.输出flag{d9-dE6-20c}