MoeCTF2023_Re
入门指北
把
INTRO_RE.exe
拖入IDA,F5
反编译得到源代码
__int64 __fastcall main()
{
int a; // [rsp+2Ch] [rbp-4h] BYREF
_main();
printf(&_format);
printf("Input the times of appearance of the word \"Reverse\" in the document to continue:\n");
scanf("%d", &a);
if ( a == 13 )
printf("moectf{F1rst_St3p_1s_D0ne}\n");
else
printf("Read carefully!\n");
system("pause");
return 0i64;
}
base_64
pyc反编译把
base_64.pyc
反编译得到python代码
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.7
import base64
from string import *
str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0='
string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/'
string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
flag = input('welcome to moectf\ninput your flag and I wiil check it:')
enc_flag = base64.b64encode(flag.encode()).decode()
enc_flag = enc_flag.translate(str.maketrans(string2, string1))
if enc_flag == str1:
print('good job!!!!')
else:
print('something wrong???')
exit(0)
import base64
str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0='
string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/'
string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
enc_flag=str1.translate(str.maketrans(string1, string2))
flag=base64.b64decode(enc_flag).decode()
print(flag)
UPX!
1.UPX!.exe
拖入PE
发现UPX
UPX 的全称是 “Ultimate Packer for Executables”,它可以将可执行文件中的代码和数据压缩到更小的体积,并在运行时自动解压缩,使程序能够正常执行。
2.利用工具,upx脱壳
D:\Upx\upx-4.1.0-win64>upx -d ../UPX!.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2023
UPX 4.1.0 Markus Oberhumer, Laszlo Molnar & John Reiser Aug 8th 2023
File size Ratio Format Name
-------------------- ------ ----------- -----------
1263104 <- 270336 21.40% win64/pe UPX!.exe
Unpacked 1 file.
enc = [0x0A, 8, 2, 4, 0x13, 1, 0x1C, 'W', 0x0F, '8', 0x1E, 'W', 0x12, '8', ',', 9, 'W', 0x10,'8', '/', 'W', 0x10,'8', 0x13, 8, '8', '5', 2, 0x11, 'T', 0x15,0x14, 2, '8', '2', '7', '?', 'F','F','F', 0x1A]
flag=''
for i in enc:
if isinstance(i, str):
i=ord(i)
flag += chr(i ^ 0x67)
print(flag)
Xor
1.拖入IDA,F5
得到主函数代码
2.双击数组enc,选取数据shift+e导出,根据a ^ b = c ->c ^ a =b编写脚本
enc = [0x54, 0x56, 0x5C, 0x5A, 0x4D, 0x5F, 0x42, 0x60, 0x56, 0x4C, 0x66, 0x52, 0x57, 0x09, 0x4E, 0x66, 0x51, 0x09, 0x4E, 0x66, 0x4D, 0x09, 0x66, 0x61, 0x09, 0x6B, 0x18, 0x44]
flag=''
for i in enc:
flag += chr(i ^ 0x39)
print(flag)
ANDROID
1.把BasicAndroid.apk
拖入jadx
得到主函数
2.根据xor编写脚本
public class Test {
public static void main(String[] args) {
char[] enc = {25, 7, 0, 14, 27, 3, 16, '/', 24, 2, '\t', ':', 4, 1, ':', '*', 11, 29, 6, 7, '\f', '\t', '0', 'T', 24, ':', 28, 21, 27, 28, 16};
char[] key = {'t', 'h', 'e', 'm', 'o', 'e', 'k', 'e', 'y'};
for (int i = 0; i < 31; i++) {
int a=(key[i % key.length]) ^ enc[i];
System.out.print((char) a);
}
}
}
//moectf{Java_in_Android_1s_easy}
EQUATION
1.拖入IDA,F5
反编译得到主函数代码
发现为31元一次方程组
ctrl+F2选取(char)v5、SBYTE1(v5)、SBYTE2(v5)、SHIBYTE(v5)、(char)v6、SHIBYTE(v6)、v7、!<< 6、
<< 7、<< 8改为v4[24]-v4[30]和=、*64、*128、*256
2.利用z3编写脚本
from z3 import *
v4 = [Int("input[%d]"%i) for i in range(31)]
s = Solver()
s.add(334 * v4[28]
+ 100 * v4[27]
+ 369 * v4[26]
+ 124 * v4[25]
+ 278 * v4[24]
+ 158 * v4[23]
+ 162 * v4[22]
+ 145 * v4[19]
+ 27 * v4[17]
+ 91 * v4[15]
+ 195 * v4[14]
+ 342 * v4[13]
+ 391 * v4[10]
+ 204 * v4[9]
+ 302 * v4[8]
+ 153 * v4[7]
+ 292 * v4[6]
+ 382 * v4[5]
+ 221 * v4[4]
+ 316 * v4[3]
+ 118 * v4[2]
+ 295 * v4[1]
+ 247 * v4[0]
+ 236 * v4[11]
+ 27 * v4[12]
+ 361 * v4[16]
+ 81 * v4[18]
+ 105 * v4[20]
+ 65 * v4[21]
+ 67 * v4[29]
+ 41 * v4[30] == 596119)
s.add(371 * v4[29]
+ 338 * v4[28]
+ 269 * v4[27]
+ 312 * v4[26]
+ 67 * v4[25]
+ 299 * v4[24]
+ 235 * v4[23]
+ 294 * v4[22]
+ 303 * v4[21]
+ 211 * v4[20]
+ 122 * v4[19]
+ 333 * v4[18]
+ 341 * v4[15]
+ 111 * v4[14]
+ 253 * v4[13]
+ 68 * v4[12]
+ 347 * v4[11]
+ 44 * v4[10]
+ 262 * v4[9]
+ 357 * v4[8]
+ 323 * v4[5]
+ 141 * v4[4]
+ 329 * v4[3]
+ 378 * v4[2]
+ 316 * v4[1]
+ 235 * v4[0]
+ 59 * v4[6]
+ 37 * v4[7]
+ 264 * v4[16]
+ 73 * v4[17]
+ 126 * v4[30] == 634009)
s.add(337 * v4[29]
+ 338 * v4[28]
+ 118 * v4[27]
+ 82 * v4[26]
+ 239 * v4[21]
+ 58 * v4[20]
+ 304 * v4[19]
+ 330 * v4[18]
+ 377 * v4[17]
+ 306 * v4[16]
+ 221 * v4[13]
+ 345 * v4[12]
+ 124 * v4[11]
+ 272 * v4[10]
+ 270 * v4[9]
+ 229 * v4[8]
+ 377 * v4[7]
+ 373 * v4[6]
+ 297 * v4[5]
+ 112 * v4[4]
+ 386 * v4[3]
+ 90 * v4[2]
+ 361 * v4[1]
+ 236 * v4[0]
+ 386 * v4[14]
+ 73 * v4[15]
+ 315 * v4[22]
+ 33 * v4[23]
+ 141 * v4[24]
+ 129 * v4[25]
+ 123 * v4[30] == 685705)
s.add(367 * v4[29]
+ 55 * v4[28]
+ 374 * v4[27]
+ 150 * v4[24]
+ 350 * v4[23]
+ 141 * v4[22]
+ 124 * v4[21]
+ 366 * v4[20]
+ 230 * v4[19]
+ 307 * v4[18]
+ 191 * v4[17]
+ 153 * v4[12]
+ 383 * v4[11]
+ 145 * v4[10]
+ 109 * v4[9]
+ 209 * v4[8]
+ 158 * v4[7]
+ 221 * v4[6]
+ 188 * v4[5]
+ 22 * v4[4]
+ 146 * v4[3]
+ 306 * v4[2]
+ 230 * v4[1]
+ 13 * v4[0]
+ 287 * v4[13]
+ 257 * v4[14]
+ 137 * v4[15]
+ 7 * v4[16]
+ 52 * v4[25]
+ 31 * v4[26]
+ 355 * v4[30] == 557696)
s.add(100 * v4[29]
+ 191 * v4[28]
+ 362 * v4[27]
+ 55 * v4[26]
+ 210 * v4[25]
+ 359 * v4[24]
+ 348 * v4[21]
+ 83 * v4[20]
+ 395 * v4[19]
+ 350 * v4[16]
+ 291 * v4[15]
+ 220 * v4[12]
+ 196 * v4[11]
+ 399 * v4[8]
+ 68 * v4[7]
+ 84 * v4[6]
+ 281 * v4[5]
+ 334 * v4[4]
+ 53 * v4[3]
+ 399 * v4[2]
+ 338 * v4[0]
+ 18 * v4[1]
+ 148 * v4[9]
+ 21 * v4[10]
+ 174 * v4[13]
+ 36 * v4[14]
+ 2 * v4[17]
+ 41 * v4[18]
+ 137 * v4[22]
+ 24 * v4[23]
+ 368 * v4[30] == 538535)
s.add(188 * v4[29]
+ (v4[26] *128)
+ 93 * v4[25]
+ 248 * v4[24]
+ 83 * v4[23]
+ 207 * v4[22]
+ 217 * v4[19]
+ 309 * v4[16]
+ 16 * v4[15]
+ 135 * v4[14]
+ 251 * v4[13]
+ 200 * v4[12]
+ 49 * v4[11]
+ 119 * v4[10]
+ 356 * v4[9]
+ 398 * v4[8]
+ 303 * v4[7]
+ 224 * v4[6]
+ 208 * v4[5]
+ 244 * v4[4]
+ 209 * v4[3]
+ 189 * v4[2]
+ 302 * v4[1]
+ 395 * v4[0]
+ 314 * v4[17]
+ 13 * v4[18]
+ 310 * v4[20]
+ 21 * v4[21]
+ 67 * v4[27]
+ 127 * v4[28]
+ 100 * v4[30] == 580384)
s.add(293 * v4[29]
+ 343 * v4[28]
+ 123 * v4[27]
+ 387 * v4[26]
+ 114 * v4[25]
+ 303 * v4[24]
+ 248 * v4[23]
+ 258 * v4[21]
+ 218 * v4[20]
+ 180 * v4[19]
+ 196 * v4[18]
+ 398 * v4[17]
+ 398 * v4[14]
+ 138 * v4[9]
+ 292 * v4[8]
+ 38 * v4[7]
+ 179 * v4[6]
+ 190 * v4[5]
+ 57 * v4[4]
+ 358 * v4[3]
+ 191 * v4[2]
+ 215 * v4[1]
+ 88 * v4[0]
+ 22 * v4[10]
+ 72 * v4[11]
+ 357 * v4[12]
+ 9 * v4[13]
+ 389 * v4[15]
+ 81 * v4[16]
+ 85 * v4[30] == 529847)
s.add(311 * v4[29]
+ 202 * v4[28]
+ 234 * v4[27]
+ 272 * v4[26]
+ 55 * v4[25]
+ 328 * v4[24]
+ 246 * v4[23]
+ 362 * v4[22]
+ 86 * v4[21]
+ 75 * v4[20]
+ 142 * v4[17]
+ 244 * v4[16]
+ 216 * v4[15]
+ 281 * v4[14]
+ 398 * v4[13]
+ 322 * v4[12]
+ 251 * v4[11]
+ 357 * v4[8]
+ 76 * v4[7]
+ 292 * v4[6]
+ 389 * v4[5]
+ 275 * v4[4]
+ 312 * v4[3]
+ 200 * v4[2]
+ 110 * v4[1]
+ 203 * v4[0]
+ 99 * v4[9]
+ 21 * v4[10]
+ 269 * v4[18]
+ 33 * v4[19]
+ 356 * v4[30] == 631652)
s.add(261 * v4[29]
+ 189 * v4[26]
+ 55 * v4[25]
+ 23 * v4[24]
+ 202 * v4[23]
+ 185 * v4[22]
+ 182 * v4[21]
+ 285 * v4[20]
+ 217 * v4[17]
+ 157 * v4[16]
+ 232 * v4[15]
+ 132 * v4[14]
+ 169 * v4[13]
+ 154 * v4[12]
+ 121 * v4[11]
+ 389 * v4[10]
+ 376 * v4[9]
+ 292 * v4[6]
+ 225 * v4[5]
+ 155 * v4[4]
+ 234 * v4[3]
+ 149 * v4[2]
+ 241 * v4[1]
+ 312 * v4[0]
+ 368 * v4[7]
+ 129 * v4[8]
+ 226 * v4[18]
+ 288 * v4[19]
+ 201 * v4[27]
+ 288 * v4[28]
+ 69 * v4[30] == 614840)
s.add(60 * v4[29]
+ 118 * v4[28]
+ 153 * v4[27]
+ 139 * v4[26]
+ 23 * v4[25]
+ 279 * v4[24]
+ 396 * v4[23]
+ 287 * v4[22]
+ 237 * v4[19]
+ 266 * v4[18]
+ 149 * v4[17]
+ 193 * v4[16]
+ 395 * v4[15]
+ 97 * v4[14]
+ 16 * v4[13]
+ 286 * v4[12]
+ 105 * v4[11]
+ 88 * v4[10]
+ 282 * v4[9]
+ 55 * v4[8]
+ 134 * v4[7]
+ 114 * v4[6]
+ 101 * v4[5]
+ 116 * v4[4]
+ 271 * v4[3]
+ 186 * v4[2]
+ 263 * v4[1]
+ 313 * v4[0]
+ 149 * v4[20]
+ 129 * v4[21]
+ 145 * v4[30] == 510398)
s.add(385 * v4[29]
+ 53 * v4[28]
+ 112 * v4[27]
+ 8 * v4[26]
+ 232 * v4[25]
+ 145 * v4[24]
+ 313 * v4[23]
+ 156 * v4[22]
+ 321 * v4[21]
+ 358 * v4[20]
+ 46 * v4[19]
+ 382 * v4[18]
+ 144 * v4[16]
+ 222 * v4[14]
+ 329 * v4[13]
+ 161 * v4[12]
+ 335 * v4[11]
+ 50 * v4[10]
+ 373 * v4[9]
+ 66 * v4[8]
+ 44 * v4[7]
+ 59 * v4[6]
+ 292 * v4[5]
+ 39 * v4[4]
+ 53 * v4[3]
+ 310 * v4[0]
+ 154 * v4[1]
+ 24 * v4[2]
+ 396 * v4[15]
+ 81 * v4[17]
+ 355 * v4[30] == 558740)
s.add(249 * v4[29]
+ 386 * v4[28]
+ 313 * v4[27]
+ 74 * v4[26]
+ 22 * v4[25]
+ 168 * v4[24]
+ 305 * v4[21]
+ 358 * v4[20]
+ 191 * v4[19]
+ 202 * v4[18]
+ 14 * v4[15]
+ 114 * v4[14]
+ 224 * v4[13]
+ 134 * v4[12]
+ 274 * v4[11]
+ 372 * v4[10]
+ 159 * v4[9]
+ 233 * v4[8]
+ 70 * v4[7]
+ 287 * v4[6]
+ 297 * v4[5]
+ 318 * v4[4]
+ 177 * v4[3]
+ 173 * v4[2]
+ 270 * v4[1]
+ 163 * v4[0]
+ 77 * v4[16]
+ 25 * v4[17]
+ 387 * v4[22]
+ 18 * v4[23]
+ 345 * v4[30] == 592365)
s.add(392 * v4[29]
+ 385 * v4[28]
+ 302 * v4[27]
+ 13 * v4[25]
+ 27 * v4[24]
+ 99 * v4[22]
+ 343 * v4[19]
+ 324 * v4[18]
+ 223 * v4[17]
+ 372 * v4[16]
+ 261 * v4[15]
+ 181 * v4[14]
+ 203 * v4[13]
+ 232 * v4[12]
+ 305 * v4[11]
+ 393 * v4[10]
+ 325 * v4[9]
+ 231 * v4[8]
+ 92 * v4[7]
+ 142 * v4[6]
+ 22 * v4[5]
+ 86 * v4[4]
+ 264 * v4[3]
+ 300 * v4[2]
+ 387 * v4[1]
+ 360 * v4[0]
+ 225 * v4[20]
+ 127 * v4[21]
+ 2 * v4[23]
+ 80 * v4[26]
+ 268 * v4[30] == 619574)
s.add(270 * v4[28]
+ 370 * v4[27]
+ 235 * v4[26]
+ 96 * v4[22]
+ 85 * v4[20]
+ 150 * v4[19]
+ 140 * v4[18]
+ 94 * v4[17]
+ 295 * v4[16]
+ 19 * v4[14]
+ 176 * v4[12]
+ 94 * v4[11]
+ 258 * v4[10]
+ 302 * v4[9]
+ 171 * v4[8]
+ 66 * v4[7]
+ 278 * v4[6]
+ 193 * v4[5]
+ 251 * v4[4]
+ 284 * v4[3]
+ 218 * v4[2]
+ (v4[1] *64)
+ 319 * v4[0]
+ 125 * v4[13]
+ 24 * v4[15]
+ 267 * v4[21]
+ 160 * v4[23]
+ 111 * v4[24]
+ 33 * v4[25]
+ 174 * v4[29]
+ 13 * v4[30] == 480557)
s.add(87 * v4[28]
+ 260 * v4[27]
+ 326 * v4[26]
+ 210 * v4[25]
+ 357 * v4[24]
+ 170 * v4[23]
+ 315 * v4[22]
+ 376 * v4[21]
+ 227 * v4[20]
+ 43 * v4[19]
+ 358 * v4[18]
+ 364 * v4[17]
+ 309 * v4[16]
+ 282 * v4[15]
+ 286 * v4[14]
+ 365 * v4[13]
+ 287 * v4[12]
+ 377 * v4[11]
+ 74 * v4[10]
+ 225 * v4[9]
+ 328 * v4[6]
+ 223 * v4[5]
+ 120 * v4[4]
+ 102 * v4[3]
+ 162 * v4[2]
+ 123 * v4[1]
+ 196 * v4[0]
+ 29 * v4[7]
+ 27 * v4[8]
+ 352 * v4[30] == 666967)
s.add(61 * v4[29]
+ 195 * v4[28]
+ 125 * v4[27]
+ (v4[26] *64)
+ 260 * v4[25]
+ 202 * v4[24]
+ 116 * v4[23]
+ 230 * v4[22]
+ 326 * v4[21]
+ 211 * v4[20]
+ 371 * v4[19]
+ 353 * v4[16]
+ 124 * v4[13]
+ 188 * v4[12]
+ 163 * v4[11]
+ 140 * v4[10]
+ 51 * v4[9]
+ 262 * v4[8]
+ 229 * v4[7]
+ 100 * v4[6]
+ 113 * v4[5]
+ 158 * v4[4]
+ 378 * v4[3]
+ 365 * v4[2]
+ 207 * v4[1]
+ 277 * v4[0]
+ 190 * v4[14]
+ 320 * v4[15]
+ 347 * v4[17]
+ 11 * v4[18]
+ 137 * v4[30] == 590534)
s.add(39 * v4[28]
+ 303 * v4[27]
+ 360 * v4[26]
+ 157 * v4[25]
+ 324 * v4[24]
+ 77 * v4[23]
+ 308 * v4[22]
+ 313 * v4[21]
+ 87 * v4[20]
+ 201 * v4[19]
+ 50 * v4[18]
+ 60 * v4[17]
+ 28 * v4[16]
+ 193 * v4[15]
+ 184 * v4[14]
+ 205 * v4[13]
+ 140 * v4[12]
+ 311 * v4[11]
+ 304 * v4[10]
+ 35 * v4[9]
+ 356 * v4[8]
+ 23 * v4[5]
+ 85 * v4[4]
+ 156 * v4[3]
+ 16 * v4[2]
+ 26 * v4[1]
+ 157 * v4[0]
+ 150 * v4[6]
+ 72 * v4[7]
+ 58 * v4[29] == 429108)
s.add(157 * v4[29]
+ 137 * v4[28]
+ 71 * v4[27]
+ 269 * v4[26]
+ 161 * v4[25]
+ 317 * v4[20]
+ 296 * v4[19]
+ 385 * v4[18]
+ 165 * v4[13]
+ 159 * v4[12]
+ 132 * v4[11]
+ 296 * v4[10]
+ 162 * v4[7]
+ 254 * v4[4]
+ 172 * v4[3]
+ 132 * v4[0]
+ 369 * v4[1]
+ 257 * v4[2]
+ 134 * v4[5]
+ 384 * v4[6]
+ 53 * v4[8]
+ 255 * v4[9]
+ 229 * v4[14]
+ 129 * v4[15]
+ 23 * v4[16]
+ 41 * v4[17]
+ 112 * v4[21]
+ 17 * v4[22]
+ 222 * v4[23]
+ 96 * v4[24]
+ 126 * v4[30] == 563521)
s.add(207 * v4[29]
+ 83 * v4[28]
+ 111 * v4[27]
+ 35 * v4[26]
+ 67 * v4[25]
+ 138 * v4[22]
+ 223 * v4[21]
+ 142 * v4[20]
+ 154 * v4[19]
+ 111 * v4[18]
+ 341 * v4[17]
+ 175 * v4[16]
+ 259 * v4[15]
+ 225 * v4[14]
+ 26 * v4[11]
+ 334 * v4[10]
+ 250 * v4[7]
+ 198 * v4[6]
+ 279 * v4[5]
+ 301 * v4[4]
+ 193 * v4[3]
+ 334 * v4[2]
+ 134 * v4[0]
+ 37 * v4[1]
+ 183 * v4[8]
+ 5 * v4[9]
+ 270 * v4[12]
+ 21 * v4[13]
+ 275 * v4[23]
+ 48 * v4[24]
+ 163 * v4[30] == 493999)
s.add(393 * v4[29]
+ 176 * v4[28]
+ 105 * v4[27]
+ 162 * v4[26]
+ 148 * v4[25]
+ 281 * v4[24]
+ 300 * v4[23]
+ 342 * v4[18]
+ 262 * v4[17]
+ 152 * v4[12]
+ 43 * v4[11]
+ 296 * v4[10]
+ 273 * v4[9]
+ 75 * v4[6]
+ 18 * v4[4]
+ 217 * v4[2]
+ 132 * v4[1]
+ 112 * v4[0]
+ 210 * v4[3]
+ 72 * v4[5]
+ 113 * v4[7]
+ 40 * v4[8]
+ 278 * v4[13]
+ 24 * v4[14]
+ 77 * v4[15]
+ 11 * v4[16]
+ 55 * v4[19]
+ 255 * v4[20]
+ 241 * v4[21]
+ 13 * v4[22]
+ 356 * v4[30] == 470065)
s.add(369 * v4[29]
+ 231 * v4[28]
+ 285 * v4[25]
+ 290 * v4[24]
+ 297 * v4[23]
+ 189 * v4[22]
+ 390 * v4[21]
+ 345 * v4[20]
+ 153 * v4[19]
+ 114 * v4[18]
+ 251 * v4[17]
+ 340 * v4[16]
+ 44 * v4[15]
+ 58 * v4[14]
+ 335 * v4[13]
+ 359 * v4[12]
+ 392 * v4[11]
+ 181 * v4[8]
+ 103 * v4[7]
+ 229 * v4[6]
+ 175 * v4[5]
+ 208 * v4[4]
+ 92 * v4[3]
+ 397 * v4[2]
+ 349 * v4[1]
+ 356 * v4[0]
+ (v4[9] *64)
+ 5 * v4[10]
+ 88 * v4[26]
+ 40 * v4[27]
+ 295 * v4[30] == 661276)
s.add(341 * v4[27]
+ 40 * v4[25]
+ 374 * v4[23]
+ 201 * v4[22]
+ 77 * v4[21]
+ 215 * v4[20]
+ 283 * v4[19]
+ 213 * v4[18]
+ 392 * v4[17]
+ 224 * v4[16]
+ v4[15]
+ 270 * v4[12]
+ 28 * v4[11]
+ 75 * v4[8]
+ 386 * v4[7]
+ 298 * v4[6]
+ 170 * v4[5]
+ 287 * v4[4]
+ 247 * v4[3]
+ 204 * v4[2]
+ 103 * v4[1]
+ 21 * v4[0]
+ 84 * v4[9]
+ 27 * v4[10]
+ 159 * v4[13]
+ 192 * v4[14]
+ 213 * v4[24]
+ 129 * v4[26]
+ 67 * v4[28]
+ 27 * v4[29]
+ 361 * v4[30] == 555288)
s.add(106 * v4[29]
+ 363 * v4[28]
+ 210 * v4[27]
+ 171 * v4[26]
+ 289 * v4[25]
+ 240 * v4[24]
+ 164 * v4[23]
+ 342 * v4[22]
+ 391 * v4[19]
+ 304 * v4[18]
+ 218 * v4[17]
+ 32 * v4[16]
+ 350 * v4[15]
+ 339 * v4[12]
+ 303 * v4[11]
+ 222 * v4[10]
+ 298 * v4[9]
+ 47 * v4[8]
+ 48 * v4[6]
+ 264 * v4[4]
+ 113 * v4[3]
+ 275 * v4[2]
+ 345 * v4[1]
+ 312 * v4[0]
+ 171 * v4[5]
+ 384 * v4[7]
+ 175 * v4[13]
+ 5 * v4[14]
+ 113 * v4[20]
+ 19 * v4[21]
+ 263 * v4[30] == 637650)
s.add(278 * v4[29]
+ 169 * v4[28]
+ 62 * v4[27]
+ 119 * v4[26]
+ 385 * v4[25]
+ 289 * v4[24]
+ 344 * v4[23]
+ 45 * v4[20]
+ 308 * v4[19]
+ 318 * v4[18]
+ 270 * v4[17]
+ v4[16]
+ 323 * v4[15]
+ 332 * v4[14]
+ 287 * v4[11]
+ 170 * v4[10]
+ 163 * v4[9]
+ 301 * v4[8]
+ 303 * v4[7]
+ 23 * v4[6]
+ 327 * v4[5]
+ 169 * v4[3]
+ 28 * v4[0]
+ 365 * v4[1]
+ 15 * v4[2]
+ 352 * v4[12]
+ 72 * v4[13]
+ 140 * v4[21]
+ 65 * v4[22]
+ 346 * v4[30] == 572609)
s.add(147 * v4[29]
+ 88 * v4[28]
+ 143 * v4[27]
+ 237 * v4[26]
+ 63 * v4[24]
+ 281 * v4[22]
+ 388 * v4[21]
+ 142 * v4[20]
+ 208 * v4[19]
+ 60 * v4[18]
+ 354 * v4[15]
+ 88 * v4[14]
+ 146 * v4[13]
+ 290 * v4[12]
+ 349 * v4[11]
+ 43 * v4[10]
+ 230 * v4[9]
+ 267 * v4[6]
+ 136 * v4[5]
+ 383 * v4[4]
+ 35 * v4[3]
+ 226 * v4[2]
+ 385 * v4[1]
+ 238 * v4[0]
+ 348 * v4[7]
+ 20 * v4[8]
+ 158 * v4[16]
+ 21 * v4[17]
+ 249 * v4[23]
+ 9 * v4[25]
+ 343 * v4[30] == 603481)
s.add(29 * v4[29]
+ 323 * v4[26]
+ 159 * v4[25]
+ 118 * v4[20]
+ 326 * v4[19]
+ 211 * v4[18]
+ 225 * v4[17]
+ 355 * v4[16]
+ 201 * v4[15]
+ 149 * v4[14]
+ 296 * v4[13]
+ 184 * v4[12]
+ 315 * v4[11]
+ 364 * v4[10]
+ 142 * v4[9]
+ 75 * v4[8]
+ 313 * v4[7]
+ 142 * v4[6]
+ 396 * v4[5]
+ 348 * v4[4]
+ 272 * v4[3]
+ 26 * v4[2]
+ 206 * v4[1]
+ 173 * v4[0]
+ 155 * v4[21]
+ 144 * v4[22]
+ 366 * v4[23]
+ 257 * v4[24]
+ 148 * v4[27]
+ 24 * v4[28]
+ 253 * v4[30] == 664504)
s.add(4 * v4[29]
+ 305 * v4[28]
+ 226 * v4[27]
+ 212 * v4[26]
+ 175 * v4[25]
+ 93 * v4[24]
+ 165 * v4[23]
+ 341 * v4[20]
+ 14 * v4[19]
+ 394 * v4[18]
+ (v4[17] *256)
+ 252 * v4[16]
+ 336 * v4[15]
+ 38 * v4[14]
+ 82 * v4[13]
+ 155 * v4[12]
+ 215 * v4[11]
+ 331 * v4[10]
+ 230 * v4[9]
+ 241 * v4[8]
+ 225 * v4[7]
+ 186 * v4[4]
+ 90 * v4[3]
+ 50 * v4[2]
+ 62 * v4[1]
+ 34 * v4[0]
+ 237 * v4[5]
+ 11 * v4[6]
+ 336 * v4[21]
+ 36 * v4[22]
+ 29 * v4[30] == 473092)
s.add(353 * v4[29]
+ 216 * v4[28]
+ 252 * v4[27]
+ 8 * v4[26]
+ 62 * v4[25]
+ 233 * v4[24]
+ 254 * v4[23]
+ 303 * v4[22]
+ 234 * v4[21]
+ 303 * v4[20]
+ (v4[19] *256)
+ 148 * v4[18]
+ 324 * v4[17]
+ 317 * v4[16]
+ 213 * v4[15]
+ 309 * v4[14]
+ 28 * v4[13]
+ 280 * v4[11]
+ 118 * v4[10]
+ 58 * v4[9]
+ 50 * v4[8]
+ 155 * v4[7]
+ 161 * v4[6]
+ (v4[5] *64)
+ 303 * v4[4]
+ 76 * v4[3]
+ 43 * v4[2]
+ 109 * v4[1]
+ 102 * v4[0]
+ 93 * v4[30] == 497492)
s.add(89 * v4[29]
+ 148 * v4[28]
+ 82 * v4[27]
+ 53 * v4[26]
+ 274 * v4[25]
+ 220 * v4[24]
+ 202 * v4[23]
+ 123 * v4[22]
+ 231 * v4[21]
+ 169 * v4[20]
+ 278 * v4[19]
+ 259 * v4[18]
+ 208 * v4[17]
+ 219 * v4[16]
+ 371 * v4[15]
+ 181 * v4[12]
+ 104 * v4[11]
+ 392 * v4[10]
+ 285 * v4[9]
+ 113 * v4[8]
+ 298 * v4[7]
+ 389 * v4[6]
+ 322 * v4[5]
+ 338 * v4[4]
+ 237 * v4[3]
+ 234 * v4[0]
+ 261 * v4[1]
+ 10 * v4[2]
+ 345 * v4[13]
+ 3 * v4[14]
+ 361 * v4[30] == 659149)
s.add(361 * v4[29]
+ 359 * v4[28]
+ 93 * v4[27]
+ 315 * v4[26]
+ 69 * v4[25]
+ 137 * v4[24]
+ 69 * v4[23]
+ 58 * v4[22]
+ 300 * v4[21]
+ 371 * v4[20]
+ 264 * v4[19]
+ 317 * v4[18]
+ 215 * v4[17]
+ 155 * v4[16]
+ 215 * v4[15]
+ 330 * v4[14]
+ 239 * v4[13]
+ 212 * v4[12]
+ 88 * v4[11]
+ 82 * v4[10]
+ 354 * v4[9]
+ 85 * v4[8]
+ 310 * v4[7]
+ 84 * v4[6]
+ 374 * v4[5]
+ 380 * v4[4]
+ 215 * v4[3]
+ 351 * v4[2]
+ 141 * v4[1]
+ 115 * v4[0]
+ 108 * v4[30] == 629123)
if s.check() == sat:
m = s.model()
for i in range(31):
print(chr(int(str(m[v4[i]]))),end = '')
#moectf{y0u_s0lv3d_Equati0ns!!!}
RRRRRc4
from Crypto.Cipher import ARC4
key = b'moectf2023'
a = [27,155,251,25,6,106,181,59,124,186,3,243,145,184,182,61,138,193,72,46,80,17,231,199,79,177,39,207,243,174,3,9,178,8,251,220,34]
enc = b''.join([bytes([i]) for i in a])
rc4 = ARC4.new(key)
decrypted_data = rc4.decrypt(enc)
print(decrypted_data.decode('utf-8'))
# moectf{y0u_r3a11y_understand_rc4!!!!}