新手一枚,如有错误(不足)请指正,谢谢!!
题目链接:你大概需要一个优秀的mac
IDA64打开,进入main函数
挨个函数进行分析
写脚本
#include <stdio.h>
int main(void)
{
char str[56] = {
0x00000015, 0x0000001F, 0x00000012, 0x00000014, 0x00000008, 0x0000003A, 0x00000046, 0x0000002C,
0x00000007, 0x0000001B, 0x00000051, 0x00000013, 0x0000003F, 0x00000057, 0x00000008, 0x00000005,
0x0000003F, 0x00000030, 0x00000032, 0x00000051, 0x00000052, 0x00000002, 0x0000006E, 0x00000078,
0x00000016, 0x0000007C, 0x0000006E, 0x00000061, 0x00000070, 0x00000048, 0x0000001C, 0x0000003B,
0x00000032, 0x0000002A, 0x00000013, 0x00000045, 0x00000007, 0x0000002A, 0x00000018, 0x0000000C,
0x0000006E, 0x00000041, 0x00000070, 0x00000004, 0x00000006, 0x0000006E, 0x0000005C, 0x00000000,
0x00000042, 0x00000045, 0x00000070, 0x0000005A, 0x00000002, 0x00000004, 0x0000000E, 0x0000004C
};
char flag[57] = {0};
int i;
for(i=55;i>39;i--)
flag[i] = str[i] ^ 239;
for(i=39;i>29;i--)
flag[i] = str[i] ^ 171;
for(i=29;i>19;i--)
flag[i] = str[i] ^ 239;
for(i=19;i>9;i--)
flag[i] = str[i] ^ 190;
for(i=9;i>=0;i--)
flag[i] = str[i] ^ 173;
for(i=0;i<56;i++)
flag[i] ^= 222;
puts(flag);
return 0;
}
flag{I5_th1s_7he_PR1c3_I’M_PAyiNG_f0r_my_pA57_m1stAk35?}