主要观点总结
文章详细分析了Windows和Linux平台下异常处理机制的原理和实现方式,介绍了不同平台下异常处理机制的差异,包括异常处理机制的触发、异常处理流程、异常处理过程中的关键数据结构等。同时,文章还探讨了异常处理流程中的潜在风险,包括如何利用异常处理流程中的缺陷进行攻击,以及如何利用异常处理过程中的关键数据结构如CFA、LSDA等进行攻击。文章最后通过示例展示了如何利用异常处理流程中的缺陷进行攻击,并成功获取Shell。
关键观点总结
关键观点1: 异常处理机制解析
文章详细分析了Windows和Linux平台下异常处理机制的原理和实现方式,包括异常处理机制的触发、异常处理流程、异常处理过程中的关键数据结构等。
关键观点2: 异常处理流程中的风险
文章探讨了异常处理流程中的潜在风险,包括如何利用异常处理流程中的缺陷进行攻击,以及如何利用异常处理过程中的关键数据结构如CFA、LSDA等进行攻击。
关键观点3: 利用异常处理流程进行攻击
文章通过示例展示了如何利用异常处理流程中的缺陷进行攻击,并成功获取Shell,展示了攻击过程的具体步骤和结果。
文章预览
一 异常处理机制解析 程序出现错误是难免的情况,程序语言和系统为了辅助程序排查问题,设立了各种机制。 第一种机制是断言检查 assert , 该函数接受一个表达式作为参数,如果表达式值为假,就会输出错误信息并终止程序。 # include void assert (scalar expression) ; 打印示例如下: main: Assertion `argc > 1 ' failed. Aborted (core dumped) 第二种是信号捕捉机制, 信号由内核传递给用户态程序,一般来讲程序收到信号后会执行默认操作,比如收到 SIGKILL 后直接杀死程序,当然C语言中允许程序自定义信号处理函数。 由于信号对于程序来讲是未知的,所以信号捕捉机制可以帮助我们了解程序收到了什么信号,以及什么程序发出的信号等等问题,缓解了未知信号对程序的影响。 第三种是错误码机制, 不管是函数的返回值还是 errno 都算作是错误码机制,它们用于衡
………………………………