2.elf z3暴力破解

runwu2204 Lv6

通过进行动态调试发现确实

![image-20230104221103045](E:\note\re\pythonz3\2.elf z3暴力破解.assets\image-20230104221103045.png)

此处是进行校验的字符串

但是开始我所理解的顺序不是从左到右而是从低位到高位如图

![image-20230104221209637](E:\note\re\pythonz3\2.elf z3暴力破解.assets\image-20230104221209637.png)

0x04,0x46,0x81,0x63……正是v4从低位到高位的顺序排列的,我又犯了些低级错误。。。。。

所以此处通过z3

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
from z3 import *
a=[0x4,0x46,0x81,0x63,0x14,
0x53,0x17,0x6d,0x6a,0x67,0x76,0x16,0x34,0x14,
0x34]
flag = [BitVec('flag[%2d]' % i, 8) for i in range(14)]
out=[0]*14
for i in range(14):
out[i]=flag[i]
v0=0
for i in range(14):
for j in range(3):
out[i]^=i^j^0x32
out[i]+=v0
v0+=1
f=Solver()
for i in range(14):
f.add(out[i]==a[i])
while(f.check()==sat):
condition = []
m = f.model()
p=""
for i in range(14):
p+=chr(int("%s" % (m[flag[i]])))
condition.append(flag[i]!=int("%s" % (m[flag[i]])))
print(p)
f.add(Or(condition))

找到了对应的flag(也许?)

![image-20230104221401911](E:\note\re\pythonz3\2.elf z3暴力破解.assets\image-20230104221401911.png)

  • 标题: 2.elf z3暴力破解
  • 作者: runwu2204
  • 创建于 : 2023-01-04 22:06:58
  • 更新于 : 2023-03-04 12:21:15
  • 链接: https://runwu2204.github.io/2023/01/04/CTF WP/Re/pythonz3/2.elf z3暴力破解/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
2.elf z3暴力破解