9.pwn 栈溢出原理

news2024/9/23 1:28:55

栈溢出简介

函数中的存储在栈中的局部变量数组边界检查不严格发生越界写,造成用户输入覆盖到缓冲区外的数据内容,
由于栈中同时存在着与函数调用参数的相关信息,栈溢出可以导致控制流劫持

基础栈溢出(hello world in pwn)

多数情况下我们需要让程序执行这一段代码般来说,在CTF中的PWN,
system("/bin/sh"");
也就是说在远程机器上开一个命令行终端
这样我们就可以通过命令行来控制目标机器
通常来说,CTF比赛中只需要开启命令行后读flag(cat flag)

ret2text

Return to text,控制程序的返回地址到原本程序中的函数(代码)。

例如程序中有类似function:

  • system(‘/bin/sh’)
  • execve(‘/bin/sh’,NULL,NULL)

就可以跳转到这个function,function的地址可以通过objdump或者ida来查找。

 理想情况下,程序中有一段代码能直接满足我们的需求,

我们只需要将执行流劫持到这一段代码即可

例子

main函数调用b,b函数调用a。
缓冲区溢出发生在a函数中。
buf的长度为80,但是却读入了200长度。

 分析程序运行至a时的栈帧
栈中存放buf和返回地址等等信息。
buf的长度为80,紧邻b函数的rbp指针和返回地址,

栈地址从高地址向低地址生长。
我们读入一段数据是从低地址向高地址读入。 

这里我们读入'X’*80 +'A’*8 +'B’*8
可以看到,原本存储b函数的rbp地址内容已经被覆盖成了'AAAAAAAA‘
返回地址已经被覆盖为了'BBBBBBBB’

这时候,如果程序返回,程序会返回一个异常错误。
因为'BBBBBBBB’这个字符串,翻译到16进制:0x4242424242424242,这个地址在内存中不是一个合法的代码地址。

我们变换一下思路,这次我们输入的数据是:X’*80 +'A’*8 + target addr
target addrs是我们想要让程序跳转到的地方,
这时候,程序的执行流就被我们控制了

 

rbp
那么RBP我们就不管了吗?
是的,一般情况下,RBP的值我们不需要构造。
RBP是程序用来定位栈中的局部变量地址的。
除非涉及到RBP寄存器传递参数,一般的ROP不要管RBP.
具体情况具体分析。

总结
栈溢出的原理就是栈中存储的局部变量数组发生溢出,覆盖了栈中的其他数据将返回地址覆盖为我们期望的目标地址,即可劫持控制流

例题

int4个字节  4x20=80个字节

编写脚本

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

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

相关文章

掌握【Python异常处理】:打造健壮代码的现代编程指南

目录 ​编辑 1. 什么是异常? 知识点 示例 小李的理解 2. 常见的内置异常类型 知识点 示例 小李的理解 3. 异常机制的意义 知识点 示例 小李的理解 4. 如何处理异常 知识点 示例 小李的理解 5. 抛出异常 知识点 示例 小李的理解 6. Python内置…

linux学习week2+3

linux学习 九.linux磁盘分区、挂载 3.磁盘情况查询 命令:df -h 注意:使用率到80%以上就要清理了 查询指定目录的磁盘占用情况:du -d 目录 其它参数: -s:指定目录占用大小汇总 -h:带计量单位 -a&#xff…

直播平台集成美颜工具详解:视频美颜SDK开发指南

本篇文章,小编将详细介绍如何在直播平台中集成美颜工具,帮助开发者更好地理解视频美颜SDK的开发过程。 一、美颜工具的作用和原理 1.1 美颜工具的作用 美颜工具主要用于提升直播视频的画面质量,让主播和观众在镜头前看起来更加美观。这些功…

解决Windows server 2022环境下,远程桌面连接仅允许两个用户同时登录问题,亲测有效!

文章目录 问题描述解决服务器远程桌面限制:第一步:给服务器开启远程访问权限解决服务器远程桌面限制:第一种方案:临时开启多用户远程桌面限制(120天)解决服务器远程桌面限制:第二种方案&#xf…

视频图文理解关联技术与创业团队(二)

上一篇:google gemini1.5 flash视频图文理解能力初探(一)提到了gemini 1.5 flash 可以对视频进行理解以及分析,但是整体在检索任务上效果不佳。 这几天参加了人工智能大会 网上收集,看一看有相似能力的一些技术点、创…

越来越多用户和商家选择小程序商城的原因是什么?小程序商城怎么搭建?

得益于小程序的便捷性,越来越多的用户选择在小程序商城购物,越来越多的商家也开始搭建自己的小程序商城。背后原因是什么呢?小程序商城怎么搭建? 用户为何青睐小程序商城? 1、便捷性 小程序商城无需下载安装&#xff…

无线领夹麦克风哪个牌子好,领夹麦克风十大品牌推荐

​演讲、表演或录制视频时,高质量的无线麦克风能极大提升整体体验。它保证了声音的清晰度和真实感,让演讲者或表演者更自信舒适。基于市场研究和用户体验,我挑选了几款表现突出的无线领夹麦克风,均为我个人使用过并推荐的产品&…

复古也疯狂:诺基亚105新款,4MB内存竟能干这些大事

今天我带着一丝怀旧和一份惊喜,想和你们分享一款特别的产品——诺基亚105(2024)2G功能手机。在智能手机充斥的今天,这样一款功能手机似乎显得格外与众不同。 它不仅是对经典的一次致敬,更在细节上融入了现代的便利。让…

tauri + vue3 如何实现在一个页面上局部加载外部网页?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

设计模式探索:建造者模式

1. 什么是建造者模式 建造者模式 (Builder Pattern),也被称为生成器模式,是一种创建型设计模式。 定义:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题: 建造者模…

Vue脚手架搭建及vue项目创建---大屏

灵感在于上数据可视化这门课程,需要做大屏系统。 下面是使用VS Code搭建vue脚手架并创建项目。 第一步 安装node.js和vscode node.js在官网下载后安装,安装后输入命令看是否安装好,若没安装好,自行去网上搜索怎么配置环境变量&a…

数据库SQL Server常用字符串函数

文章目录 字符串函数 字符串函数 CONCAT:拼接字符串 CONCAT(COLUMN1,_,COLUMN2) AS COLCONVERT:转换数据类型 CONVERT(data_type(length),data_to_be_converted,style)例如:CONVERT(VARCHAR(10),GETDATE(),110) SUBSTRING():从字符串中返回…

动手实操微软开源的GraphRAG

微软在今年4月份的时候提出了GraphRAG的概念,然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前,已有6900Star。 安装教程 官方推荐使用Python3.10-3.12版本,我使用Python3.10版本安装时,在…

快速上手:前后端分离开发(Vue+Element+Spring Boot+MyBatis+MySQL)

文章目录 前言项目简介环境准备第一步:初始化前端项目登录页面任务管理页面 第二步:初始化后端项目数据库配置数据库表结构实体类和Mapper服务层和控制器 第三步:连接前后端总结 🎉欢迎来到架构设计专栏~探索Java中的静态变量与实…

AutoHotKey自动热键(四)WINDOWS程序窗口的9种匹配方法与Window Spy窗口检索的使用方法

我们在进行窗口匹配的时候,根据匹配类型的不同可以多种匹配方法,根据使用者目录中可以找到九种匹配方式,这些匹配方式大都需自带的SPY监视工具用以查看窗口的名称.类名.进程名.句柄ID.位置信息等等 Window Spy的使用方法★★★ 软件界面 这个软件是安装好之后自带的一个脚本…

「API取数」FDL获取金蝶云星空的单据数据

很多企业的ERP系统都在用金蝶云星空,金蝶云星空API是IT人员获取数据的重要来源, 常常用来生成定制化报表,进行数据分析,或是将金蝶云的数据与OA系统、BI工具集成。 通常情况下,IT人员需要使用Python、Java等语言编写脚…

十款绚丽的前端 CSS 菜单导航动画

CSS汉堡菜单是一种非常流行的PC端和移动端web菜单风格,特别是移动端,这种风格的菜单应用更为广泛。这款菜单便非常适合在手机App上使用,它的特点是当顶部菜单弹出时,页面内容将会配合菜单出现适当的联动,让整个页面变得…

【UE Lua】 快速入门(基础语法、与UE引擎的交互)

目录 0 引言1 基础语法1.1 变量和数据类型1.2 注释1.3 控制结构1.4 函数1.5 表(Table)1.6 元表(Metatable)1.7 字符串操作1.8 模块和包1.9 错误处理 2 数据结构 - 表2.1 表(Table)2.2 元表(Meta…

ElasticSearch学习篇14_《检索技术核心20讲》进阶篇之大倒排索引

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243,文档形式记录笔记。 内容 主要是海量数据的大倒排索引的一些原理设计思想,ES底层就是基于这些设计思想以及原理,主要涉及读写分离、索引分层等…

【DFS(深度优先搜索)详解】看这一篇就够啦

【DFS详解】看这一篇就够啦 🍃1. 算法思想🍃2. 三种枚举方式🍃2.1 指数型枚举🍃2.2 排列型枚举🍃2.3 组合型枚举 🍃3. 剪枝优化🍃4. 图的搜索🍃5. 来几道题试试手🍃5.1 选…