BUU-[SUCTF2018]babyre
给了flag的格式 根据table运算出flag 直接爆破k验证即可
最开始v186 %= 0x10000 看成了 10000 一直没有跑出来呜呜呜
/* v186 %= 0x10000u; v185 = 8; while ( v185 ) { --v185; for ( j = 22; j; v184[j] |= v189 << v185 ) { v188 = *(&v4 + 22 * v185 + --j); v189 = (v188 >> ((v186 >> 2 * v185) & 3)) & 1; } } */ #include<stdio.h> #include<string.h> int v[500]; int v184[100]; int v188,v189; void init(); int main() { init(); for(int v186 = 0;v186 < 0x10000;v186++) { memset(v184,0,sizeof(v184)); int v185 = 8; while ( v185 ) { --v185; for (int j = 22; j; v184[j] |= v189 << v185 ) { v188 = v[22 * v185 + --j + 4]; v189 = (v188 >> ((v186 >> 2 * v185) & 3)) & 1; } } // SUCTF{xxxxxxxxxxxxxxx} if(v184[0] == 'S' && v184[1] == 'U' && v184[2] == 'C' && v184[3] == 'T' && v184[4] == 'F' && v184[5] == '{' && v184[21] == '}') { printf("key : %d\n",v186); for(int i = 0;i < 22;i++) { printf("%c",v184[i]); } printf("\n"); } } return 0; } void init() { v[4]= 2; v[5]= 3; v[6]= 2; v[7]= 1; v[8]= 4; v[9]= 7; v[10]= 4; v[11]= 5; v[12]= 10; v[13]= 11; v[14]= 10; v[15]= 9; v[16]= 14; v[17]= 15; v[18]= 12; v[19]= 13; v[20]= 16; v[21]= 19; v[22]= 16; v[23]= 17; v[24]= 20; v[25]= 23; v[26]= 22; v[27]= 19; v[28]= 28; v[29]= 25; v[30]= 30; v[31]= 31; v[32]= 28; v[33]= 25; v[34]= 26; v[35]= 31; v[36]= 36; v[37]= 33; v[38]= 34; v[39]= 39; v[40]= 36; v[41]= 33; v[42]= 34; v[43]= 35; v[44]= 40; v[45]= 41; v[46]= 46; v[47]= 43; v[48]= 36; v[49]= 45; v[50]= 38; v[51]= 47; v[52]= 56; v[53]= 49; v[54]= 58; v[55]= 59; v[56]= 52; v[57]= 61; v[58]= 62; v[59]= 55; v[60]= 48; v[61]= 57; v[62]= 50; v[63]= 59; v[64]= 60; v[65]= 53; v[66]= 54; v[67]= 55; v[68]= 72; v[69]= 73; v[70]= 66; v[71]= 66; v[72]= 68; v[73]= 68; v[74]= 70; v[75]= 71; v[76]= 72; v[77]= 73; v[78]= 74; v[79]= 74; v[80]= 77; v[81]= 77; v[82]= 79; v[83]= 78; v[84]= 80; v[85]= 80; v[86]= 82; v[87]= 83; v[88]= 85; v[89]= 84; v[90]= 86; v[91]= 87; v[92]= 89; v[93]= 89; v[94]= 90; v[95]= 91; v[96]= 92; v[97]= 93; v[98]= 94; v[99]= 94; v[100]= 96; v[101]= 96; v[102]= 99; v[103]= 99; v[104]= 100; v[105]= 101; v[106]= 103; v[107]= 103; v[108]= 105; v[109]= 105; v[110]= 107; v[111]= 107; v[112]= 108; v[113]= 109; v[114]= 110; v[115]= 110; v[116]= 112; v[117]= 112; v[118]= 114; v[119]= 115; v[120]= 116; v[121]= 117; v[122]= 119; v[123]= 119; v[124]= 120; v[125]= 121; v[126]= 123; v[127]= 123; v[128]= 125; v[129]= 125; v[130]= 127; v[131]= 127; v[132]= -127; v[133]= -127; v[134]= -125; v[135]= -125; v[136]= -116; v[137]= -115; v[138]= -114; v[139]= -113; v[140]= -120; v[141]= -119; v[142]= -118; v[143]= -117; v[144]= -116; v[145]= -115; v[146]= -114; v[147]= -121; v[148]= -104; v[149]= -111; v[150]= -110; v[151]= -109; v[152]= -108; v[153]= -107; v[154]= -106; v[155]= -105; v[156]= -104; v[157]= -103; v[158]= -102; v[159]= -102; v[160]= -100; v[161]= -100; v[162]= -98; v[163]= -98; v[164]= -96; v[165]= -96; v[166]= -94; v[167]= -94; v[168]= -92; v[169]= -92; v[170]= -90; v[171]= -90; v[172]= -88; v[173]= -88; v[174]= -86; v[175]= -86; v[176]= -84; v[177]= -84; v[178]= -82; v[179]= -82; v[180]= -80; v[181]= -79; v[182]= -78; v[183]= -77; }