攻防世界 hackme

攻防世界 hackme

链接

hackme

思路

sub_406D90是一个随机数生成函数(根据返回值猜的,静态我看不太出来,动态多调试几次可能会发现生成的数字不同)。

v15是输入的,v16是需要相等的。

逻辑大概就是随机抽10个数用解(加)密算法计算结果与数据段的数据比较,如果全相等即正确。

python逆向代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import bitstring


s = "DufhbmfpG`imosewUglpt"
l = [95, 242, 94, 139, 78, 14, 163, 170, 199, 147, 129, 61, 95, 116, 163, 9, 145, 43, 73, 40, 147, 103]
res = []
# for i in range(10):
for i in range(22):
v18 = 0
v19 = 0
temp1 = l[i]
temp2 = i+1
while v18 < temp2:
v18 += 1
v19 = 1828812941 * v19 + 12345
v13 = (v19 ^ temp1) & 0xFF
res.append(v13)

print("".join([chr(i) for i in res]))

flag:flag{d826e6926098ef46}

由于原先的代码与的时候存的是int8八位数据, 所以异或后和0xFF与一下

请我喝杯咖啡吧~

支付宝
微信