刚开始没注意,直接进的64位,没发现有壳,里面也有俩个函数,只是看不懂,然后发现字符串也没有,就查了下壳,发现是upx壳,就脱壳
顺着字符串看到了很显眼的corret,跟进去(双击,然后选择corret字符串,进去相应的函数)
这边这个if语句的判断很明显啊,就点进去看了看,就是一大串乘法
思路:
很简单,除回去就出来了, 这个数量很大,我是用word查找替换做的
中间少了一个[6],因为只有一个数,就从0开始一个个试的,是1,
脚本
#include <iostream>
using namespace std;
int main(){
//int index = 0;
//char v12[] ="PyvragFvqrYbtvafNerRnfl@syner-ba.pbz";
//char flag[44];
char a1[55];
a1[0]=166163712/ 1629056;
a1[1]=731332800/ 6771600;
a1[2]=357245568/ 3682944;
a1[3]=1074393000/ 10431000;
a1[4]=489211344/ 3977328;
a1[5]=518971936/ 5138336;
a1[6]='@';
a1[7]=406741500/ 7532250;
a1[8]=294236496/ 5551632;
a1[9]=177305856/ 3409728;
a1[10]=650683500/ 13013670;
a1[11]=298351053/ 6088797;
a1[12]=386348487/ 7884663;
a1[13]=438258597/ 8944053;
a1[14]=249527520/ 5198490;
a1[15]=445362764/ 4544518;
a1[17]=174988800/ 3645600;
a1[16]=981182160/ 10115280;
a1[18]=493042704/ 9667504;
a1[19]=257493600/ 5364450;
a1[20]=767478780/ 13464540;
a1[21]=312840624/ 5488432;
a1[22]=1404511500/ 14479500;
a1[23]=316139670/ 6451830;
a1[24]=619005024/ 6252576;
a1[25]=372641472/ 7763364;
a1[26]=373693320/ 7327320;
a1[27]=498266640/ 8741520;
a1[28]=452465676/ 8871876;
a1[29]=208422720/ 4086720;
a1[30]=515592000/ 9374400;
a1[31] = '\0';
for(int i=0;i<31;i++){
cout<<(char)a1[i];
}
//flag[index] = '\0';
//cout<<"结果是: "<<flag<<endl;
system("pause");
return 0;
}
flag{e165421110ba03099a1c039337}