攻防世界——zorropub
1.查壳,无壳,64位。2.IDA反编译。逻辑:从最后的输出可知flag为v12,而v12是由v9与dword_6020C0的异或得来的。v9是用srand和rand随机生成的伪随机数。可以根据前面的代码算出seed(种子)。3.exp(1)生成seed。(2)生成随机数,并解密。注:题目文件是elf文件是在linux系统上的可执行文件所以生成随机数要在linux系统上编译运行。相同种子的随机数在
·
1.查壳,无壳,64位。
2.IDA反编译。
逻辑:从最后的输出可知flag为v12,而v12是由v9与dword_6020C0的异或得来的。
v9是用srand和rand随机生成的伪随机数,并且这组伪随机数还要经过MD5加密5eba99aff105c9ff6a1a913e343fec67相同才可以。
可以根据前面的代码算出一组seed(种子)。
3.exp
(1)生成seed(一部分)。
(2)生成随机数。
注:题目文件是elf文件是在linux系统上的可执行文件所以生成随机数要在linux系统上编译运行。
相同种子的随机数在两个系统中值不同。
windows系统:
linux系统:
(3)解密(总)。
import random
import subprocess
#生成seed组
seed=[]
for i in range(65537):
a=0
seed.append(i)
while i:
i&=i-1
a+=1
if a!=10:
seed.pop()
#爆破
for i in seed:
p=subprocess.Popen('/home/donstpast/Desktop/zorropub',stdin=subprocess.PIPE,stdout=subprocess.PIPE)
out = p.communicate(('1\n%s\n'%i).encode('utf-8'))[0]
if "nullcon".encode('utf-8')in out:
print(out)
print(i)
4.get flag
nullcon{nu11c0n_s4yz_x0r1n6_1s_4m4z1ng}
更多推荐
已为社区贡献1条内容
所有评论(0)