栈劫持(栈迁移)介绍
栈劫持
栈劫持也可以称为栈迁移,用来解决栈本身可以利用的空间不够用,一般是溢出空间不够
用,没办法有效构造rop链。这个时候我们可以通过劫持ebp的方式,利用leave 和 ret两个汇编指令来做
到栈劫持(栈迁移)。
汇编指令
leave 等价于
mov ebp,esp;
pop ebp;
ret 等价于 pop eip
;
这两个指令常常用于把之前所开辟的栈帧给还原,并接着向下执行下一条指令
leave -> 把前面抬起来的栈帧给退下来
retn -> 把一开始call调用函数的返回地址给弹出来,即执行call下一条指令;
实例
这里读入0x30字节数据给s,s大小是0x28,只能溢出0x8字节,覆盖到ret,没法构造太长
的rop,但是这边可以给s写入2次数据,我们可以通过第一次输入来泄露程序里的ebp地
址,知道了ebp的地址就能够推算出参数s在栈上的地址,第二次直接往栈上写入
system(‘/bin/sh’),之后利用leave;ret的栈劫持去到参数s的栈,让它去执行我们布置
在栈上的system(‘/bin/sh’)来获取shell
.
栈劫持(栈迁移)介绍相关推荐
- [BUUCTF]PWN——ciscn_2019_es_2(栈劫持)
32位程序,开启了nx保护 有个后门函数,但是需要把 system里面的 "echo flag" 修改为 bin/sh 才可以利用 这里可以得到 system 的地址; vul函数 ...
- 全栈开发-Python的介绍
全栈开发-Python的介绍 本篇刚要 Python的诞生 Python的应用领域 Python的优缺点 Python的解释器 Python的发展史 Python2 or Python3? 一. Py ...
- [Black Watch 入群题]PWN 栈劫持的利用
32位程序,开启了nx保护 没有system函数和'/bin/sh'的字符串,这边需要我们自己去想办法构造system('/bin/sh') 思路 第一次输入的参数s,那边我们可以写入很长的数据,我们 ...
- c++ stl栈容器stack用法介绍
stack堆栈容器 堆栈是一个线性表,插入和删除只在表的一端进行.这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom).堆栈的元素插入称为入栈,元素的删除称为出栈.由于元素 ...
- linux存储--进程栈 线程栈 内核栈 中断栈(十六)
一.栈是什么?栈有什么作用? 首先,栈 (stack) 是一种串列形式的 数据结构.这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈 ...
- Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
栈是什么?栈有什么作用? 首先,栈 (stack) 是一种串列形式的 数据结构.这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 ...
- 一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
点击蓝字 关注我们 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源于网络,侵删 栈是什么?栈有什么作用? 首先,栈 (stack) ...
- Linux中的各种栈:进程栈 线程栈 内核栈 中断栈
Linux中的各种栈:进程栈 线程栈 内核栈 中断栈 栈的作用 1. 函数调用 2. 多任务支持 Linux 中有几种栈?各种栈的内存位置? 1. 进程栈 2. 线程栈 3. 进程内核栈 4. 中断栈 ...
- 【数据结构】-顺序栈(初始化栈顶指针为-1)
顺序栈-初始化栈顶指针为-1 1.头文件及类型定义 2.顺序栈类型定义 3.函数声明 4.基本操作 4.1 初始化顺序栈 4.2 判空 4.3 入栈 4.4 出栈 4.5 读取栈顶元素 4.6 mai ...
最新文章
- python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)
- [ZZOJ#31]类欧几里得
- 崽崽的发烧终于快结束了
- Java和Lagom的CQRS
- C语言和指针的本质是什么?技术大神给出答案
- python中使用PIL模块中的ImageEnhance进行图片数据增强
- 【CF666E】Forensic Examination - 广义后缀自动机+线段树合并
- 洛谷——[USACO07OCT]Bessie‘s Secret Pasture S
- 我在CSDN上使用了大半年的账号最后不属于自己,纵有疾风起,人生不言弃
- TL-R406 IP带宽控制功能设置指南
- 仓库调用 RAP接口管理平台
- 第一个爬虫项目-爬取唯美小姐姐网站
- 朋友走了 失落感来了
- 扫地机器人的配件能自制么_米家扫地机器人,第三方配件耗材靠谱吗?
- PHP支付宝转账到支付宝账号/支付(公钥证书方式)
- 修改xampp中的mysql的密码报错,ERROR 1348 (HY000): Column 'Password' is not updatable
- 新手真无线蓝牙耳机怎么选?大神推荐高颜值时尚主流蓝牙耳机推荐
- 数据结构(C语言) 实验---图及其应用
- java支持多继承吗
- Remix 以太坊Solidity IDE搭建与初步使用