ISCC2021-Re部分题解

## ISCC2021 RE wp
@TOC

练武题

0x00 Garden

题目描述:

1
花园里藏了一个小宝贝,你能找到他吗?

pyc文件直接反编译然后看源码
在线工具
在这里插入图片描述
异或顺序随便换 但是最后的结果不变,相异为一,相同为零。

1
2
3
4
5
f= '2(88\x006\x1a\x10\x10\x1aIKIJ+\x1a\x10\x10\x1a\x06'
flag="
for i in f:
flag+=chr(ord(i)^123)
print(flag)

0x01 Analysis

题目描述:

1
分析就完事了!

打开IDA分析
在这里插入图片描述
通过字符串 找到关键点:
在这里插入图片描述
进入mix查看:
在这里插入图片描述
上脚本:

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
cpt = [67,-33,20,3,13,44,9,1,23,23,8,-4,43,-6,20,23,-7,37,-11,34,61,-50,24,22,10]
mix = [82,69,86,69,82,83,69]

for k in range(len(mix)):
mix[k] %= 64
#加密用的密钥都是取余之后的,所以先取余操作
for n in range(len(cpt)):
if mix[n%7] & 1:
cpt[n] -= 2
else:
cpt[n] -= 1
#先逆加一和加二
for m in range(len(cpt)//2):
x = cpt[m]
cpt[m] = cpt[len(cpt)-1-m]
cpt[len(cpt)-1-m] = x
#对称互换
for l in range(len(cpt)):
cpt[l] -= mix[l%7]
#逆自加,既自减
for j in range(len(cpt)-2,-1,-1):
cpt[j] += cpt[j+1]
#从后往前,因为最后一个字符是不变的
for i in range(len(cpt)):
cpt[i] += 64
#加回64
for i in range(len(cpt)):
cpt[i] = chr(cpt[i])
flag = ''.join(cpt)
print(flag)
Prev:
永恒之蓝 MS17-010 漏洞复现
Next:
ISCC2021 MISC wp
catalog
catalog