buuctf-pwn bypwn(ret2shellcode)题解(学习过程持续更新)

本人也是在自学过程,主要目的也是记录学习过程,有些地方做的不太好,都是按照自己理解进行讲解的(不专业),欢迎大家指出问题

此处我将文件命名为bypwn

checksec bypwn 查看一下保护机制

可以看到这是一个64-bit的文件,什么保护也没开

将文件拖入ida64,按F5将汇编代码转换成c语言代码,得到

可以看到存在scanf栈溢出,需要填充0x50+8的垃圾数据至return address。我们可以将shellcode写在&v4的最开头,然后覆盖返回地址为我们写入shellcode的地址。

双击sub_4007F9,进入这个函数

可以看到让我们输入0x20字节的内容,然后打印出来。我们可以利用printf遇到'\x00'才会停止输出这个特点,输出rbp的地址,从而得到我们写入shellcode的地址(rbp-0x50)

返回虚拟机

nano exp.py 开始写攻击脚本

第一次发送用于接收rbp的地址,从而得到我们后续写入shellcode的地址

第二次发送shellcode,然后填充剩余垃圾数据至return address,覆盖返回地址为写入shellcode的地址,执行shellcode,获得shell

保存退出

python3 exp.py

cat flag

此题完

相关推荐
重明链迹实验室7 分钟前
重明链迹丨每周区块链安全要闻(1012-1018)
安全·web3·区块链
我叫洋洋12 分钟前
Cadence 16.6 从 OrCAD Capture 原理图到 Allegro PCB 全流程(含 5 个常见坑)
c语言·eda·嘉立创
持敬chijing1 小时前
白盒测试与代码审计-Claude Code Windows环境搭建
windows·安全·网络安全·网络攻击模型
迪康coolmu1 小时前
基于迪康端点安全一体化管理系统的公用终端上机与信创补丁实战
linux·运维·服务器·网络·安全·电脑
水饺编程1 小时前
第2章:Linux 基础,关机命令
linux·c语言·汇编
笨鸟先飞的橘猫1 小时前
skynet热更新实现问题与排错记录
学习·lua·skynet
andrsted2 小时前
练题簿在线免费刷题:将资料、Word 和 PDF导入小程序练习
学习·微信小程序·小程序·pdf·word·学习方法
新手小新2 小时前
通信工程师学习笔记5-通信系统
笔记·学习
我命由我123452 小时前
刚性防水与柔性防水
学习·职场和发展·产品运营·求职招聘·职场发展·学习方法·产品
dtq04242 小时前
C++3 - 分支语句if和string变量
开发语言·c++·学习