simple-checkin

Running the binary through IDA:

  // ...
*((_DWORD *)v14 + 223) = 176;
*((_DWORD *)v16 + 223) = 153;
*((_DWORD *)v14 + 224) = 95;
*((_DWORD *)v16 + 224) = 126;
*((_DWORD *)v14 + 225) = 34;
*((_DWORD *)v16 + 225) = 95;
v12 = 1;
for ( i = 0; i < v10; ++i )
{
if ( (*((char *)v18 + i) ^ *((_DWORD *)v14 + i)) != *((_DWORD *)v16 + i) )
v12 = 0;
}
if ( v12 )
puts("Good job!");
else
puts("Try again!");
return 0;

The decompilation suggests that the binary expects us to input the xor of v14[i] and v16[i]. It looks like the correct input would also be the flag.

flag = [
11 ^ 104, 125 ^ 11, 172 ^ 207, 168 ^ 220, 5 ^ 99, 239 ^ 148, 30 ^ 119,
215 ^ 136, 140 ^ 237, 148 ^ 228, 31 ^ 112, 235 ^ 135, 155 ^ 244, 42 ^ 77,
182 ^ 223, 128 ^ 250, 58 ^ 95, 57 ^ 102, 57 ^ 95, 95 ^ 48, 147 ^ 225,
95 ^ 0, 112 ^ 3, 70 ^ 51, 225 ^ 130, 185 ^ 209, 60 ^ 99, 59 ^ 90, 118 ^ 41,
44 ^ 64, 72 ^ 39, 174 ^ 192, 106 ^ 13, 215 ^ 136, 75 ^ 56, 162 ^ 214,
191 ^ 205, 193 ^ 168, 238 ^ 128, 186 ^ 221, 100 ^ 59, 187 ^ 210, 187 ^ 213,
183 ^ 232, 182 ^ 194, 198 ^ 174, 73 ^ 32, 224 ^ 147, 179 ^ 236, 35 ^ 64,
133 ^ 237, 88 ^ 61, 161 ^ 194, 13 ^ 102, 243 ^ 154, 33 ^ 79, 170 ^ 245,
204 ^ 175, 74 ^ 34, 2 ^ 99, 46 ^ 66, 176 ^ 220, 212 ^ 177, 140 ^ 226,
73 ^ 46, 61 ^ 88, 165 ^ 137, 126 ^ 28, 142 ^ 251, 21 ^ 97, 217 ^ 134,
65 ^ 40, 152 ^ 236, 239 ^ 176, 144 ^ 253, 52 ^ 93, 169 ^ 206, 15 ^ 103,
124 ^ 8, 76 ^ 19, 69 ^ 39, 123 ^ 30, 110 ^ 49, 149 ^ 244, 58 ^ 101,
128 ^ 231, 205 ^ 162, 123 ^ 20, 226 ^ 134, 159 ^ 192, 60 ^ 72, 204 ^ 165,
106 ^ 7, 248 ^ 157, 103 ^ 56, 119 ^ 3, 243 ^ 156, 168 ^ 247, 85 ^ 57,
101 ^ 0, 21 ^ 116, 167 ^ 213, 135 ^ 233, 203 ^ 148, 137 ^ 232, 29 ^ 127,
207 ^ 160, 209 ^ 164, 27 ^ 111, 121 ^ 38, 231 ^ 134, 125 ^ 8, 92 ^ 40,
240 ^ 159, 251 ^ 150, 9 ^ 104, 74 ^ 62, 69 ^ 44, 7 ^ 105, 116 ^ 19,
205 ^ 146, 127 ^ 11, 152 ^ 240, 11 ^ 98, 170 ^ 217, 4 ^ 91, 14 ^ 126,
112 ^ 2, 34 ^ 77, 17 ^ 114, 156 ^ 249, 114 ^ 1, 62 ^ 77, 124 ^ 67,
134 ^ 223, 28 ^ 115, 33 ^ 84, 110 ^ 49, 24 ^ 117, 78 ^ 39, 48 ^ 87,
59 ^ 83, 15 ^ 123, 42 ^ 117, 38 ^ 72, 111 ^ 10, 184 ^ 221, 142 ^ 234,
76 ^ 19, 127 ^ 11, 34 ^ 77, 239 ^ 176, 99 ^ 7, 163 ^ 204, 194 ^ 157,
200 ^ 161, 99 ^ 23, 216 ^ 135, 2 ^ 96, 136 ^ 237, 25 ^ 122, 91 ^ 58,
120 ^ 13, 122 ^ 9, 57 ^ 92, 140 ^ 211, 191 ^ 215, 195 ^ 166, 25 ^ 107,
93 ^ 56, 135 ^ 216, 154 ^ 243, 217 ^ 170, 162 ^ 253, 234 ^ 139, 127 ^ 32,
253 ^ 141, 208 ^ 177, 249 ^ 144, 182 ^ 216, 247 ^ 145, 110 ^ 27, 173 ^ 193,
175 ^ 240, 93 ^ 53, 216 ^ 189, 202 ^ 178, 41 ^ 19, 143 ^ 188, 181 ^ 135,
15 ^ 110, 189 ^ 140, 206 ^ 248, 248 ^ 154, 157 ^ 174, 203 ^ 170, 24 ^ 47,
160 ^ 197, 143 ^ 234, 206 ^ 168, 48 ^ 8, 119 ^ 19, 95 ^ 58, 138 ^ 187,
235 ^ 217, 10 ^ 60, 115 ^ 64, 218 ^ 226, 158 ^ 175, 97 ^ 83, 127 ^ 81,
81 ^ 20, 32 ^ 78, 105 ^ 3, 16 ^ 127, 105 ^ 16, 241 ^ 217, 38 ^ 73,
158 ^ 236, 125 ^ 34, 247 ^ 153, 6 ^ 105, 10 ^ 126, 176 ^ 153, 95 ^ 126,
34 ^ 95,
]

print("".join(map(chr, flag)))
cvctf{i_apologize_for_such_a_long_string_in_this_checkin_challenge,but_it_might_be_a_good_time_to_learn_about_automating_this_process?You_might_need_to_do_it_because_here_is_a_painful_hex:32a16b3a7eef8de1263812.Enjoy(or_not)!}