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

此题完

相关推荐
kyrie_sakura1 小时前
MySQL数据库学习笔记3--关联(联合)查询
数据库·学习·mysql
马立杰1 小时前
IE241216_准入认证技术
安全·网络安全·交换安全
辣知2 小时前
辣知·化智49 黄帝时期至夏朝的一千年
学习
云杂项2 小时前
人工智能:数据与模型安全(个人笔记)
人工智能·安全
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之安全配置基础及函数式风格对比
java·安全·spring
T1mzhou2 小时前
ARM64 Linux 6.10内核启动流程6-psci.c和ATF/U-Boot 的电源接口
linux·服务器·c语言
是隼人2 小时前
buuctf-pwn PWN2(整数溢出)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
hui-梦苑2 小时前
[Math]复合函数极限存在定理:单调连续函数反函数连续性定理推论
学习·数学·定理·函数极限·海涅定理
在线OJ的阿川2 小时前
基于智慧一考通Web平台的测试报告
功能测试·学习·测试报告