SafeSEH笔记

突破SafeSEH机制之二——利用未启用SafeSEH模块绕过SafeSEH 敲黑板敲黑板~~今天我们继续~ 上次讲到SafeSEH的突破,介绍了一个简单的利用堆绕过SafeSEH突破SafeSEH机制之一——利用堆绕过SafeSEH 本篇总共遇到了3个问题还没有解决,有没有大神帮我解答一下,我都把问题背景给标黄了。 突破思路: 那么有3种情况,系统可以允许异常处理函数执行: 1、异常处理函数位于加载模块内存范围之外,DEP关闭 2、异常处理函数位于加载模块内存 阅读详情
by void
2007-08-10
http://www.ph4nt0m.org

Q: 如何在exploit里去触发SEH异常?
A: 让目标程序去读/写无效地址, 覆盖数据超出栈底.

Q: 如何找到需要覆盖的SEH?
A: 用测试串,如"aaaaaa..."覆盖stack导致异常,被od捕获,看SEH链,得到被覆盖的SEH处理程序的stack地址.

Q: 如何找跳转地址?
A: Ctrl+B/L 搜索5? 5? C3(pop reg/pop reg/retn)不一定找得到,
Ctrl+B/L搜索C3或者C2,Ctrl+↑/↓人工判定找.


ntdll!KiUserExceptionDispatcher()流程
VEH <-- winxp才有
↓
SEH <-- win2000从这里开始
↓
UEF 当程序被调试时,UnhandledExceptionFilter() SetUnhandledExceptionFilter()

ntdll!KiUserExceptionDispatcher 检查SEH handler过程:
1. 检查handler是否在线程TEB指定的Stack范围内(fs:[4]~fs:[8]),如果在其中,拒绝执行.
2. 检查handler是否在已加载模块列表(exe和dll), 如果handler不在这些模块地址范围内,执行.
3. 如果handler在模块地址范围内,开始检查已注册异常处理程序列表.
检查过程:
--------------
1) if((DLLCharacteristics&0xFF00) == 0x0400), 拒绝执行(No SEH);否则,继续检查.
2) Load Configuration Directory地址为0(即不存在),停止检查,执行.
Load Configuration Directory结构存在,继续检查:
+00h directory_size // 目录长度介于[0,0x48),停止检查,执行.
...
+40h handlers[] // SEH handler数组指针(元素是SEH handler RVA地址),if(handlers[]==0),停止检查,执行.
+44h handler_num // SEH handler数组元素个数,if(handler_num==0),停止检查,执行.

3) 然后开始逐个匹配,发现匹配,调用;没有发现匹配,拒绝调用.

针对Win2003/WinXP SP2对SEH handler(异常处理函数)地址的突破方法:
1. 不在stack里面, 在heap里.
对IE等浏览器,用js等heapspray分配堆,用堆内地址覆盖SEH handler.

2. 在已加载模块的范围外.
用代码页的跳转地址,比如0x7FFA1571(win2000/xp/2003 chs通用地址)

3. 在系统dll里面,且是该dll注册过的异常处理函数.
利用已注册的SEH handler,利用性不大.


od的safeseh插件的使用,用其分析已加载模块,得到如下结果:
/Safeseh ON 只能选已注册的SEH handler地址来跳.
/Safeseh OFF 可以选里面的地址(pop/pop/ret地址)来跳.
No SEH (DLLCharacteristics&0xFF00) == 0x0400, 不能跳.
突破SafeSEH机制之一——利用堆绕过SafeSEH 文章是发在吾爱破解的,这里直接转过来了 我也是个新手,刚学漏洞调试,发现要学的东西太多,想要把漏洞学好,必须精通各类系统底层机制,汇编,PE等等等等太多太多,所以不可能把这些东西都学会了,再去调试漏洞,只能一步步慢慢从简单开始,另外也要学会忽略那些你现在所力不能及的地方,如果实在不懂,就跳过,可能到哪一天你忽然就明白了。所以这里,也是希望同学们想学习的不要被这个东西吓到,静下心来慢慢看,如果有不 阅读详情

相关推荐

突破SafeSEH机制之三——利用加载模块之外的地址绕过SafeSEH

敲黑板敲黑板~睡着的同学醒醒了!! 今天我们继续突破SafeSEH,上次讲到第二种思路利用未启用SafeSEH模块绕过SafeSEH 今天来实现最后一个突破思路:       异常处理函数位于加载模块内存范围之外,DEP关闭------->>>在加载模块内存范围外找一个跳板指令就可以转入shellcode执行 上次我们是找到了一个加载模块内存范围内找到的一个指令,今天我们要在加载内存范围外

Yx0051的博客 987

SafeSEH原理及绕过技术浅析

SafeSEH原理及绕过技术浅析     作者:magictong 时间:2012年3月16日星期五   摘要:主要介绍SafeSEH的基本原理和SafeSEH的绕过技术,重点在原理介绍。 关键词:SafeSEH;绕过技术;异常处理   目录 前言 SafeSEH的保护原理 (1)      二进制层面 (2)      系统层面 怎么关掉编译器的SafeSEH支持

magictong的专栏 1万+

003:大疆智图新手入门:从下载安装到首次建模实战

本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。

t8u9v0的博客 703

《0day安全》——亡羊补牢:SafeSEH

启用该链接选项后,编译器在编译程序的时候将程序所有的异常处理函数地址提取出来,编入一张安全 S.E.H 表,并将这张表放到程序的映像里面。当程序调用异常处理函数的时候会将函数地址与安全 S.E.H 表进行匹配, 检查调用的异常处理函数是否位于安全 S.E.H 表中。 攻击返回地址绕过SafeSEH 没开GS,开了SafeSEH,直接攻击函数返回地址 利用虚函数绕过SafeSEH 不涉及异常处理,SafeSEH没有参与感 从堆中绕过SafeSEH ...

sunr_的博客 494

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 197

【无标题】EXCEL实现刷题

运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。

weixin_44081794的博客 2976

SafeSEH原理与对抗

SafeSEH原理 在 Windows XP sp2 以及之后的版本中,微软引入了 S.E.H 校验机制 SafeSEH。SafeSEH 需要 OS 和 Compiler 的双重支持,二者缺一都会降低保护能力。通过启用 /SafeSEH 链接选项可心使编译好的程序具备 SafeSEH 功能(VS2003 及后续版本默认启用)。该选项会将所有异常处理函数地址提取出来,编入 SEH 表中,并将这张表...

whatday的专栏 6530

检索增强世界模型(R-WoM)原理与应用实践

世界模型是AI系统理解环境的核心技术,通过构建环境的内部表示实现状态预测和行动规划。传统方法基于RNN或VAE等神经网络,而检索增强世界模型(R-WoM)创新性地引入检索机制,结合外部记忆库提升系统性能。这种架构突破模型参数限制,使AI能像人类一样利用历史经验解决问题,在游戏AI、虚拟助手等场景表现优异。关键技术包括FAISS相似性搜索、分层记忆管理和动态检索策略,其中Transformer编码器和GRU动态模型的组合实现高效环境建模。实践表明,该方法可提升47%的战术多样性,加快32%的应急响应速度。

weixin_42676876的博客 341

利用未启用SafeSEH模块绕过SafeSEH

此方法可以说不是方法了·········必须程序要加载一个没用开启SafeSEH的DLL 才能去突破产生对话框 DLL模块编译: /base:"0x11120000" #include "stdafx.h" BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved)...

weixin_30433075的博客 194

PLSQL Developer14连接Oracle详细过程

下载地址:Instant Client for Microsoft Windows (x64) 64-bit | Oracle 中国解压客户端工具到一个目录(解压文件到当前目录,自动合并成一个目录)​ 电脑(右键)→属性→高级系统设置→环境变量→系统环境变量→新建变量名:NLS_LANG 变量值: AMERICAN_AMERICA.ZHS16GBK​ 变量名:TNS_ADMIN 变量值:C:\xiaxinyu\software\Oracle\instantclient_19_10​ 在Oracle客户端(C

summer_fish的专栏 3985

MIL图像处理那些事:MIL的安装和MIL工具箱

MIL图像处理那些事:MIL的安装和测试,如何用C#使用MIL

十多年IT经验,专注机器视觉,智能制造半导体行业 5274

[Tips] SafeSEH笔记

http://hi.baidu.com/54nop/blog/item/5303fd5111490d8d8d5430f0.htmlQ: 如何在exploit里去触发SEH异常? A: 让目标程序去读/写无效地址, 覆盖数据超出栈底.Q: 如何找到需要覆盖的SEH? A: 用测试串

test 519

华为的LTC(Lead to Cash,从线索到现金)流程是其销售管理体系的核心,覆盖了从发现销售线索到最终收回现金的全过程,强调端到端的业务贯通和以客户为中心的运营理念

华为LTC流程是覆盖销售全周期的管理体系,包含四大阶段:线索转机会(LTO)、机会转订单(OTO)、订单转交付(OTD)、交付转现金(DTC)。其核心采用"铁三角"团队模式(AR/SR/FR协作),通过多部门联合评审把控关键节点,实现端到端业务贯通。该流程与IPD、MTL、ITR等体系高效协同,结合iSales平台实现数字化管理,有效提升销售效率、客户满意度和资金回笼速度。

金牌架构师 1727

栈溢出笔记1.11 SafeSEH

在上节写示例的过程中,我把要用到的POP+POP+RET指令写在了自己的一个DLL中。POP+POP+RET指令是很常见的指令,一般函数的末尾都是这种形式,因此,系统DLL中应该是有该指令的,比如ntdll.dll中就有: 图73我们把上节示例中的地址改成这个地址试试,没有弹出MessageBox,说明Shellcode失效了,在调试器中看看: 图74提示说无法处理异常,说明改了地址后的

hustd10的博客 1181

动态视频目标追踪系统:基于YOLOv11+DeepSORT的从入门到实战全流程指南

仅保留车辆类别(假设车辆类别ID为2)if det.class_index == 2: # 车辆类别ID通过本指南,你已完成从环境搭建数据准备模型训练到追踪系统与UI界面的全流程,搭建了一套完整的动态视频目标追踪系统。该系统在安防监控、交通管理等场景中具有实用价值,可实现目标的实时稳定追踪。未来,你可尝试结合多模态特征(如目标外观+运动特征)提升追踪鲁棒性,或探索轻量化模型部署(如TensorRT加速),让系统在边缘设备上也能高效运行。

LXY_LOVE36的博客 142

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

/SafeSEH编译选项 : 原理及绕过技术浅析

/SafeSEH编译选项 x86 : XP支持/Win7支持 x64 : 不支持 摘要:主要介绍SafeSEH的基本原理和SafeSEH的绕过技术,重点在原理介绍。 关键词:SafeSEH;绕过技术;异常处理   目录 前言 SafeSEH的保护原理 (1)      二进制层面 (2)      系统层面 怎么关掉编译

stonesharp的专栏 1717

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SafeSEH

简介 safeseh是在seh的基础上进行的改进, 是异常处理的关键结构, 不同的编译器可能使用的safeseh不一样, 但是基本的思想都一样; safeseh验证 异常处理链起始位置储存在fs:[0]的位置, 在进程的DEP是开启的情况,有两种异常处理函数被异常分发器认为是有效的: 异常处理函数在进程映像的SafeSEH表中,并且没有NO_SEH标志。 异常处理函数在进程映像的可执行页,并且没有NO_SEH标志,没有SafeSEH表,没有.NET的ILonly标志。 在进程的DEP关闭的情况下

钞sir的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SafeSEH Exploit——利用未启用SafeSEH的DLL

实验内容和代码均修改自《0day安全》第二版 实验环境操作系统: Windows XP SP3 DEP关闭 EXE编译器: Visual Studio 2008 DLL编译器: VC++6.0 dll 基址设置 /base:”0x11120000” 编译选项: 禁用优化 (/0d) build版本: release版本实验原理结合之前的内容,可以了解到对于未启用

Re:Umiade.tr 720

利用未开启SafeSEH的模块绕过SafeSEH机制的细节问题

SafeSEH机制及绕过方式简介 1.SafeSEH会在程序编译的时候保存一份程序所使用的所有异常处理函数的地址 如列表 table[0]:0x40000100 handler1 table[1]:0x40000200 handler2 table[2]:0x40000300 handler3 2.且在进行异常处理的时候会检测handle地址所在的PE文件的异常处理函数的地址表中 因为只有开启了S...

笔记本 577

SafeSEH基本概念+ 从堆区绕过SafeSEH学习

SafeSEH 原理: 在程序调用异常处理函数前,对要调用的的异常处理函数进行一系列的有效性检测 VS2003后续版本  默认启用的 编译器将所有的额SEH中所有的异常处理函数的值提取出来编入一张安全SEH 表 将这张表放到程序的映像中 当程序调用异常处理的时候会将函数地址与安全SEH表进行匹配 检查调用的异常处理函数是否位于安全SEH表 VS2008 命令行: 好像只有releas

zcc1414的专栏 997

Windows下SafeSEH保护机制详解及其绕过

我们知道通常情况下,异常处理机制都是系统帮我们写好,编译进程序里面的,那我们如何对这些异常处理地址进行保护呢?我们想想是不是可以像前面的GS那样,我们在另一个地方保存,然后在调用异常处理的时候进行验证呢?实际上是可以的,这张表我们称之为安全S.E.H表。当程序开启了SafeSEH保护后,在编译期间,编译器将所有的异常处理地址提取出来,并且编入一张安全SEH表中,并且将这张表放到程序的映像里面。

WdIg-2023的博客 1697

突破SafeSEH之理论篇

工作原理:编译器启动SafeSEH选项后,在编译时将所有异常处理函数地址编入一张表,俗称“良民册”。当程序调用异常处理函数时,会检查该函数是否位于该册①。 ①处再具体一些: 检查异常处理链是否位于当前程序的栈中,若不在则停止调用异常处理函数 检查异常处理函数指针是否位于当前程序的栈中,若在则停止调用异常处理函数 前两个通过则调用RtlIsValidHandler()来验证异常处理函数的...

anyingga7675的博客 183

《0day安全》亡羊补牢:SafeSEH

本节所有关于绕过 SafeSEH 机制的讨论均不考虑 DEP 的影响。 攻击返回地址绕过 SafeSEH 利用虚函数绕过 SafeSEH 和上一章介绍的类似,通过攻击虚函数表来劫持程序流程,这个过程不涉及任何异常处理,SafeSEH 也就只是个摆设。 从堆中绕过 SafeSEH 程序中断前刚刚完成堆中空间的申请,此时寄存器 EAX 中存放着申请空间的首地址,所以 0x328b8也就是 shellcode 的首地址 被溢出的字符串起始位置为 0x0013FE8C S.E.H 异常处理函数指针位于0x001

weixin_50287973的博客 330
上一篇: Edit控件密码窗口的秘密--一种全新的通用密码记录技术
下一篇: 冰点密码破解 — 强悍的调试器 SOFTICE
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值