ISCTF2023 RE z3_revenge WP

z3解方程,就是改变量名有点麻烦

#z3 计算
from z3 import *
from Crypto.Util.number import *

l = [Int(f'l_{i}') for i in range(43)]

S = Solver()  #创建约束求解器

S.add(l[0] - 258 - 330 * l[1] == -27575)  #添加约束条件
S.add(l[1] + 400 + 686 - l[2] == 1102)
S.add(l[2] + 910 + 625 * l[3] == 53477)
S.add(l[3] - 333 + 648 * l[4] == 45111)
S.add(l[5] + 254 + 929 * l[4] == 65407)
S.add(l[5] + 282 - (207 - l[6]) == 254)
S.add(l[6] + 927 - (l[7] + 166) == 761)
S.add(l[7] + 633 - (436 - l[8]) == 309)
S.add(451 * l[8] + 598 * l[9] == 57548)
S.add(l[9] - 680 - (l[10] + 324) == -1001)
S.add(844 * l[10] - 110 * l[11] == 32154)
S.add(l[11] + 923 + 302 * l[12] == 30618)
S.add(l[13] + 164 + 950 * l[12] == 93321)
S.add(l[14] + 411 + 631 * l[13] == 36423)
S.add(l[14] + 234 - 662 * l[15] == -65921)
S.add(l[15] + 755 - 933 * l[16] == -91512)
S.add(l[16] + 781 + l[17] + 491 == 1420)
S.add(l[17] - 756 - 804 * l[18] == -43319)
S.add(l[18] - 404 + 998 - l[19] == 602)
S.add(114 * l[19] - (l[20] + 447) == 4631)
S.add(350 * l[20] - (l[21] + 473) == 17627)
S.add(872 * l[21] + 797 * l[22] == 126253)
S.add(952 * l[22] - (840 - l[23]) == 45909)
S.add(l[24] + 278 + 404 * l[23] == 41127)
S.add(l[24] - 829 + l[25] + 878 == 192)
S.add(l[25] - 320 + l[26] + 549 == 381)
S.add(356 * l[26] + 402 * l[27] == 40128)
S.add(l[27] - 476 + 649 * l[28] == 65774)
S.add(325 * l[28] - (l[29] + 106) == 32999)
S.add(l[29] - 320 - (l[30] + 982) == -1308)
S.add(l[30] + 588 - (357 - l[31]) == 333)
S.add(l[31] - 542 - (l[32] + 497) == -1087)
S.add(l[32] + 369 + l[33] + 306 == 872)
S.add(888 * l[33] - (l[34] + 953) == 86014)
S.add(721 * l[34] - (l[35] + 431) == 40569)
S.add(l[35] - 689 + 224 - l[36] == -465)
S.add(l[36] - 340 + l[37] + 798 == 609)
S.add(l[37] + 218 + 653 - l[38] == 824)
S.add(l[38] + 194 - (351 - l[39]) == -4)
S.add(l[39] + 471 + l[40] + 105 == 682)
S.add(l[40] - 298 + l[41] + 725 == 579)
S.add(759 * l[41] + 279 * l[42] == 109257)
S.add(l[0] + 159 + 505 * l[42] == 63357)

S.check()  #检测是否有解

d=S.model()  #输出

flag = b''  #字节字符串
for i in range(43):
    flag += long_to_bytes(d[l[i]].as_long())
print(flag)
#b'ISCTF{88863cb9-dc15-4d1e-b64f-33cb9aa6e46b}'

应该也是动态flag