栈劫持

栈劫持也可以称为栈迁移,用来解决栈本身可以利用的空间不够用,一般是溢出空间不够

用,没办法有效构造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
.

栈劫持(栈迁移)介绍相关推荐

  1. [BUUCTF]PWN——ciscn_2019_es_2(栈劫持)

    32位程序,开启了nx保护 有个后门函数,但是需要把 system里面的 "echo flag" 修改为 bin/sh 才可以利用 这里可以得到 system 的地址; vul函数 ...

  2. 全栈开发-Python的介绍

    全栈开发-Python的介绍 本篇刚要 Python的诞生 Python的应用领域 Python的优缺点 Python的解释器 Python的发展史 Python2 or Python3? 一. Py ...

  3. [Black Watch 入群题]PWN 栈劫持的利用

    32位程序,开启了nx保护 没有system函数和'/bin/sh'的字符串,这边需要我们自己去想办法构造system('/bin/sh') 思路 第一次输入的参数s,那边我们可以写入很长的数据,我们 ...

  4. c++ stl栈容器stack用法介绍

    stack堆栈容器 堆栈是一个线性表,插入和删除只在表的一端进行.这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom).堆栈的元素插入称为入栈,元素的删除称为出栈.由于元素 ...

  5. linux存储--进程栈 线程栈 内核栈 中断栈(十六)

    一.栈是什么?栈有什么作用? 首先,栈 (stack) 是一种串列形式的 数据结构.这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈 ...

  6. Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    栈是什么?栈有什么作用? 首先,栈 (stack) 是一种串列形式的 数据结构.这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 ...

  7. 一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    点击蓝字 关注我们 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源于网络,侵删 栈是什么?栈有什么作用? 首先,栈 (stack) ...

  8. Linux中的各种栈:进程栈 线程栈 内核栈 中断栈

    Linux中的各种栈:进程栈 线程栈 内核栈 中断栈 栈的作用 1. 函数调用 2. 多任务支持 Linux 中有几种栈?各种栈的内存位置? 1. 进程栈 2. 线程栈 3. 进程内核栈 4. 中断栈 ...

  9. 【数据结构】-顺序栈(初始化栈顶指针为-1)

    顺序栈-初始化栈顶指针为-1 1.头文件及类型定义 2.顺序栈类型定义 3.函数声明 4.基本操作 4.1 初始化顺序栈 4.2 判空 4.3 入栈 4.4 出栈 4.5 读取栈顶元素 4.6 mai ...

最新文章

  1. python练习题(python之“求一个数的阶乘并求结果中从后向前数第一个不为0(零)的数” 等)
  2. [ZZOJ#31]类欧几里得
  3. 崽崽的发烧终于快结束了
  4. Java和Lagom的CQRS
  5. C语言和指针的本质是什么?技术大神给出答案
  6. python中使用PIL模块中的ImageEnhance进行图片数据增强
  7. 【CF666E】Forensic Examination - 广义后缀自动机+线段树合并
  8. 洛谷——[USACO07OCT]Bessie‘s Secret Pasture S
  9. 我在CSDN上使用了大半年的账号最后不属于自己,纵有疾风起,人生不言弃
  10. TL-R406 IP带宽控制功能设置指南
  11. 仓库调用 RAP接口管理平台
  12. 第一个爬虫项目-爬取唯美小姐姐网站
  13. 朋友走了 失落感来了
  14. 扫地机器人的配件能自制么_米家扫地机器人,第三方配件耗材靠谱吗?
  15. PHP支付宝转账到支付宝账号/支付(公钥证书方式)
  16. 修改xampp中的mysql的密码报错,ERROR 1348 (HY000): Column 'Password' is not updatable
  17. 新手真无线蓝牙耳机怎么选?大神推荐高颜值时尚主流蓝牙耳机推荐
  18. 数据结构(C语言) 实验---图及其应用
  19. java支持多继承吗
  20. Remix 以太坊Solidity IDE搭建与初步使用

热门文章

  1. webService的简单使用
  2. Android开发中adb命令的常用方法
  3. Netsclaer配置
  4. linux系统回收站功能的实现
  5. AIX 访问Linux NFS共享错误案例
  6. 总结之:CentOS6.5 LAMP的基本原理以及分主机架构解析
  7. 恶心的C语言strtok函数
  8. 3.1 Adapter(适配器)
  9. c语言书籍elf文件,扒一扒ELF文件
  10. python打出由边框包围的_python – 提取边框并将其保存为图像