2022单身杯wp(RE)
Day 1
re签到
64位无壳,拖进ida
一眼base64
直接解码三次,得ctfshow{dsb_re_sign_in_hsssssssss}
magic
64位无壳,丢进ida
进入checkToken函数,进一步发现三个判断函数,三个需同时满足
直接复制过去爆破
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| int fact1(int a1) { int v3;
v3 = 0; while ( a1 > 0 ) { v3 += a1 % 10; a1 /= 10; } if(v3 == 58) return 1; else return 0; }
int fact2(int a1) { int i;
for ( i = 2; sqrt((double)a1) >= (double)i; ++i ) { if ( !(a1 % i) ) return 0; } return 1; }
int fact3(int a1) { int v2; int v3; int v4; int v5; int v6;
v2 = a1; v4 = 0; while ( v2 > 0 ) { v2 /= 10; ++v4; } v3 = a1; while ( v3 ) { v5 = (int)((double)v3 / pow(10.0, (double)(v4 - 1))); v6 = v3 % 10; v3 = (int)((double)v3 - pow(10.0, (double)(v4 - 1)) * (double)v5) / 10; if ( v5 != v6 ) return 0; v4 -= 2; } return 1; }
int main() { int j = 1; for(int j = 0; j < 4294967295; j++) { if(fact1(j)&&fact2(j)&&fact3(j)) printf("%d\n", j); } }
|
得出结果