首页 > 其他分享 >SEH溢出原理

SEH溢出原理

时间:2022-12-16 15:14:08浏览次数:48  
标签:字节 地址 处理程序 原理 SEH shellcode 溢出 seh

0x01 SEH概念及原理

windows系统的结构化异常处理机制(structured exception handing SEH),常见的try/except 或者try/catch就是异常处理代码。

当程序产生异常之后,就会从栈中加载catch块的地址并调用catch块。目前的操作系统安全性很强,可执行的代码和不可执行代码的数据是分开的。因为异常处理程序的地址依然在可执行代码区域,所以可以利用它来执行shellcode.

0x02基于seh的渗透步骤

1)引起应用程序异常,调用异常处理程序。

2)使用POP/POP/RET指令的地址改写异常处理程序的地址,调用catch块的内存地址保存在栈中,指向下个异常处理程序指针的地址是ESP+8,因此需要两个POP操作将执行重定向到下条SEH记录的地址。

注意:每个SEH记录有8个字节组成,前4个字节是它后面的SEH异常处理程序的地址,可用来保存下条SEH记录的地址,后4个字节是catch块的地址。

3)步骤1)将下条SEH记录的地址替换成跳转到攻击载荷JMP指令的地址,在步骤2)操作完成后,程序会跳过指定数量的字节去执行shellcode。

4)成功跳转到shellcode之后,执行载荷。

 

 0x03常见shellcode编写

填充+nseh+seh+nop+shellcode

各部分含义如下:
填充:数据覆盖直到函数返回地址
nseh : next seh 指示下一个seh结构的位置,在这里使用"\xeb\x06\x90\x90"填充是一个通用的填充方法,这四个字节反汇编的结果是 jmp 6   nop   nop这样三条指令,原因是jmp 6个字节刚好绕过两个nop指令和一个4字节的seh处理程序的地址,落入nop指令区,然后滑行进入shellcode

seh : seh处理程序地址部分填入的是一个指向pop pop ret 这样连续三条指令的一个地址,这样填充原因是,在异常出现时,先保存当前栈定,然后系统会在栈里面压入两个参数,所以两个pop是pop出来系统压的参数,然后ret到nseh的位置,接着开始执行指令,然后参考上面nseh的数据介绍就可以。

 

原文链接:一个缓冲区溢出覆盖SEH漏洞分析
https://www.52pojie.cn/thread-456209-1-1.html
(出处: 吾爱破解论坛)

标签:字节,地址,处理程序,原理,SEH,shellcode,溢出,seh
From: https://www.cnblogs.com/yuzhou1jie/p/15629200.html

相关文章

  • vue2 数据响应式原理模拟继续优化
    上次简单的模拟了数据响应式,当我们第一次修改值依赖函数会执行一次,再修改一次值依赖函数会执行两次,这需要做下去重,去掉重复绑定的依赖。采用的方法是给每个dev实例添加一个......
  • python编程中的if __name__ == 'main': 的作用和原理
    大多数编排得好一点的脚本或者程序里面都有这段if__name__=='main':,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与打架分享。  1、这段代码的功能 ......
  • Kubernetes快速实战与核心原理剖析
    K8S概览1.1K8S是什么?K8S官网文档:https://kubernetes.io/zh/docs/home/K8S是Kubernetes的全称,源于希腊语,意为“舵手”或“飞行员”,官方称其是:用于自动部署、扩展和管理“......
  • 手写一个Redux,深入理解其原理-面试进阶
    Redux可是一个大名鼎鼎的库,很多地方都在用,我也用了几年了,今天这篇文章就是自己来实现一个Redux,以便于深入理解他的原理。我们还是老套路,从基本的用法入手,然后自己实现一个R......
  • 实验七-缓冲区溢出 实验报告
    实验七-缓冲区溢出实验报告实验指导书内容一、准备:输入命令安装一些用于编译32位C程序的软件包二、实验步骤:1、初始设置:(1)关闭地址空间随机化(2)设置zsh程序,关闭......
  • 负载均衡原理
    本人在工作中接触到的负载均衡:F5,DNS,nginx,云平台SLB,在此做个总结。 负载均衡的分类DNS解析:因为一个域名可以通过DNS解析到多个IP,这一特性天然使DNS有负载均衡的能力。......
  • Spring Security 安全框架入门原理及实战
    SpringSecurity入门原理及实战在web应用开发中,安全无疑是十分重要的,选择SpringSecurity来保护web应用是一个非常好的选择。SpringSecurity是spring项目之中的一个安全......
  • 5分钟带你彻底搞懂async底层实现原理!
    ES2017标准引入了async函数,使得异步操作变得更加方便。async函数是什么?一句话,它就是Generator函数的语法糖。研究async的原理,就必须先弄清楚Generator是个啥。......
  • Docker安装和基本原理及镜像管理
    一、Docker概述1.1IT架构的演进:裸金属→虚拟机→容器→函数化、代码化   云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务......
  • 实验七-缓冲区溢出
    实验指导书内容一、实验简介缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。......