不得不再次吐槽一下exploit-db对exp审核的质量,这个exp仍然不能触发漏洞,修改第一个参数则可以触发,我给出的poc是一个可以触发php漏洞的,问题出现在php_tidy.dll扩展中,对tidy_parse_file的第二个参数,也就是文件绝对路径没有进行长度控制和内容校验,导致在fopen失败后进入失败处理逻辑引发缓冲区溢出,下面对此漏洞进行详细分析。
---- 中断和异常机制 有时候普通的程序流必须可以被要求快速反应的处理事件中断。电脑提供了一个称为中断的结构来处理这些事件。 外部中断由CPU的外部引起。 例如:当一个鼠标移动了,硬件鼠标中断现在的程序来处理鼠标移动(移动鼠标,等等)。中断导致控制权转移到一个中断处理程序。中断处理程序是处理中断的程序。每种类型的 中断都分配了一个中断号。在物理内存的开始处,存在一张包含中断处理 程序段地址的中断向量 表。中断号是这张表中最基本的指针。 内部中断由CPU的内部引起,要么是由一个错误引起,要么由中
进程,这个词大家应该耳熟能详了,那进程是什么呢?我们说程序一般是外存上的一个可执行文件,而进程就是这个可执行文件在内存中的一个执行实例。概念始终只会是一个抽象的概念,进程系列文章通过 $xv6$ 的实例来将进程这个概念具象化。本篇主要介绍进程涉及到的一些数据结构,废话不多说,直接来看
准备工作:下载ucorelab在的master分支(注意不是main分支),需要用到的资料以及答案都在里面。
现在有个难题——CF8h、CFCh端口是32位端口,可像Turbo C之类的16位C语言编译器都不支持32位端口访问。怎么办?我们可以使用**_ _ emit _ 在程序中插入机器码。每次都 _ emit _ _一下肯定很麻烦,所以我们应该将它封装成函数。代码如下(注意66h是32位指令前缀)**:
16位标志寄存器——共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征。标志位的分布如下表所示。
经过一系列的文章,我们通过汇编语言,体验了保护模式下分段、分页、特权级跳转、中断、异常等机制。 那么,事到如今,你是否已经深谙保护模式的设计之道了呢?究竟什么是保护模式,保护模式又在“保护”什么呢?他为了什么诞生,又和实模式有什么区别呢? 本文我们就来详细总结一下。
linux的上下文切换就是进程线程的切换,也就是切换struct task_struct结构体,一个任务的上下文包括cpu的寄存器,内核栈等,由于1个cpu上的所有任务共享一套寄存器,所以在任务挂起的时候需要保存寄存器,当任务重新被调度执行的时候需要恢复寄存器。每种处理器都提供了硬件级别的上下文切换,比如x86架构下的TSS段,TSS段包括了一个任务执行的所需要的所有上下文,主要有:1.通用寄存器和段寄存器。2.标志寄存器EFLAGS,程序指针EIP,页表基地址寄存器CR3,任务寄存器和LDTR寄存器。3.I/O映射位图基地址和I/O位图信息。4.特权级0,1,2堆栈指针。5.链接到前一任务的链指针。所以上下文切换也很简单,直接用call或者jmp指令调度任务。同样ARM架构也有快速上下文切换技术。但是Linux为了适用更多的cpu架构没使用处理器相关的上下文切换技术,而是大部分通过软件实现。linux上下文切换就在schedule()函数里,很多地方都会调用这个函数。scchedule函数前面大部分代码是和调度算法相关的,比如实时任务调度算法,O(1)调度算法(2.6.22版本被CFS调度算法取代),CFS调度算法等。经过前面的代码计算后找出下一个要执行的任务,然后开始执行上下文切换。先看一段linux2.6.18版本还使用O(1)调度算法的schedule函数代码:
一个月前,我在Twitter上放了一个零日的Source引擎,而对其功能没有太多解释。确定不幸的是无法利用之后,我们将对其进行探索,并探索一下Valve的Source Engine。
CrowdStrike公司安全研究员称,一个名为“毒液(VENOM)”的QEMU漏洞使数以百万计的虚拟机处于网络攻击风险之中,该漏洞可以造成虚机逃逸,威胁到全球各大云服务提供商的数据安全。QEMU是一个指令级模拟器的自由软件实现,被广泛用于各大GNU/Linux发行版。 漏洞原理 这个名为毒液(VENOM,编号CVE-2015-3456)的安全漏洞威胁到了整个安全行业,可以造成虚拟机逃逸。QEMU是一个指令级模拟器的自由软件实现,被广泛用于各大GNU/Linux发行版(包括Debian, Gentoo,
Docker Container Capabilities 在docker run命令中,我们可以通过--cap-add和--cap-drop来给容器添加linux Capabilities。下面表格中的列出的Capabilities是docker默认给容器添加的,用户可以通过--cap-drop去除其中一个或者多个。 Docker’s capabilitiesLinux capabilitiesCapability Description SETPCAPCAP_SETPCAPModify pro
进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。
这是Hyper-V 远程代码执行漏洞(CVE-2021-28467)的阐述,这是微软在 2021 年 5 月修补的 vmswitch.sys(网络虚拟化服务提供商)中的任意内存读取。
作者:riusksk【TSRC】 在日常分析软件漏洞时,经常需要耗费比较长的分析时间,少则几小时,多则数天,甚至更久。因此,经常总结一些分析技巧是非常有必要的,针对不同的漏洞类型采取不同的分析思路和技巧,可以有效地提高分析速度。对于一些被曝出来的热门0day,网上一般都会有分析文章,但一般都是“结论性分析”,也就是直接帖漏洞代码,指出哪里出错,而非“思路性分析”。如果你经常分析漏洞的话,会发现占用你分析时间的往往不是分析漏洞代码,而是定位漏洞代码。所以说,调试分析漏洞有时就是看下断点下得准不,再加上一些胡猜
这是CVE-2021-28476(“Hyper-V 远程代码执行漏洞”)的概念证明,这是vmswitch.sys微软在 2021 年 4 月修补的任意内存读取(网络虚拟化服务提供商)。
CVE-2010-3333漏洞是一个栈溢出漏洞,该漏洞是由于Microsoft word在处理RTF数据的对数据解析处理错误,可被利用破坏内存,导致任意代码执行。 首先使用metsaploit生成crash poc msf > search CVE-2010-3333 [!] Module database cache not built yet, using slow search Matching Modules ================ Name
by hcl, nine8 of code audit labs of vulnhunt.com 1 概述 网上公开一个疑似CVE-2014-1761的RTF样本,翰海源分析发现该样本并非CVE-2014-1761,而是在一个RTF样本中同时包括了两个漏洞,分别为CVE-2012-0158和CVE-2013-3906,比较特殊。 昨日,macfee在其Blog上也公布了一篇一个RTF样本包含CVE-2010-3333和CVE-2013-3906两个漏洞的文章。两个样本比较相似。 2 样本分析 2.1 漏洞C
本文记录我的电脑的内存条的硬件损坏了,导致用着用着就蓝屏,我通过启动和故障恢复配置自动蓝屏打 dump 的功能,在蓝屏时创建了 dump 文件。通过分析 dump 文件大概猜测是内存的问题
让我们梳理下一RFG防护的基本思路:1) 在每一个函数开始处,”读”取当前栈rsp里面的值到rax中,该值就是函数的返回地址,我们记作return_value2) 然后将rax里面值”写”入fs:[rsp] 偏移处 , 也就是保留函数返回地址return__value的值到”影子栈“Thread Control stack当中。3) 在函数即将结束的时候检测当前返回地址值return_value和fs:[rsp]中保存的是否一致,如果一致,函数正常返回,如果不一致将跳向 xxx!_guard_ss_verf
最近发现有很多漏洞利用或木马程序样本会通过一些技术手段,达到使自动化检测系统或分析人员调试工具的栈回溯机制失效的目的。在本文中我将会简单分析和推测一下这类恶意样本都是通过哪些套路来实现和栈回溯机制的对抗。需要注意的是,文中讨论的堆栈都是代指线程在用户层的堆栈,并未涉及内核层的堆栈。
近期在尝试 office 文档在线编辑和预览的一些解决方案, 目前在使用Collabora Office, 但是Collabora的docker镜像在OpenShift中运行不起来, 一直提示Operation not permitted.
NAME syscall - 间接系统调用 SYNOPSIS #define _GNU_SOURCE #include #include /* For SYS_xxx definitions */ int syscall(int number, ...); DESCRIPTION syscall() 执行一个系统调用,根据指定的参数nu
进程切换,又称为任务切换、上下文切换、或者任务调度。本文就研究Linux内核的进程切换。我们首先理解几个概念。
Windows 10 2004 (19041.508) Windows 10 2004 (19041.508)
CVE-2018-8174漏洞是360追日安全团队于4份捕获到的,并将其命名为“双杀”漏洞,意指在IE浏览器以及office均可以引发的漏洞。
最近发布的 Linux 内核带了一个针对内核的能力强大的 Linux 监控框架。它起源于历史上人们所说的的 BPF。
曾经碰到一种奇怪的Crash场景:Windows程序Crash,每次用windbg attach或者ntsd/cdb产生dump,总是不能捕获到程序出错时候的栈,而且crash的时候只能看到少数甚至只剩一个线程的信息,而这个仅有的一些线程函数调用栈,也并不是导致程序Crash的地方。
https://blog.csdn.net/cqkxboy168/article/details/8994479
kconfig-hardened-check是一款功能强大的安全检测工具,可以帮助广大研究人员检测Linux内核中的安全增强选项。
实际上 lab5 可能是最简单的一个 lab 了(绝大多数的代码都已经写好了,就一点点完形填空要做)
因此当前linux的调度程序由两个调度器组成:主调度器,周期性调度器(两者又统称为通用调度器(generic scheduler)或核心调度器(core scheduler))
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/details/44059999
本次实验内容是BufferOverflowStackGS(环境提供的栈溢出一共有两个,一个是普通的,一个是GS保护的)
中断是硬件和软件交互的一种机制,可以说整个操作系统,整个架构都是由中断来驱动的。中断的机制分为两种,中断和异常,中断通常为 $IO$ 设备触发的异步事件,而异常是 $CPU$ 执行指令时发生的同步事件。本文主要来说明 $IO$ 外设触发的中断,总的来说一个中断的起末会经历设备,中断控制器,$CPU$&$OS$ 三个阶段:设备产生中断,中断控制器接收和发送中断,$CPU$&$OS$ 来实际处理中断。
本章介绍所有的关于模块和内核编程的关键概念,通过一个 hello world 模块来认识驱动加载的流程及相关细节。
最近不知道怎么回事,家里电脑经常性地出现蓝屏(先死机后蓝屏),很多时候有些文档没有保存便蓝屏导致文档丢失,其中也包括您现在正在看到的这一篇文章(撰写本文时,蓝了一次),以前一直比较懒,重启大法一顿怼,然后重新再做编辑,只不过PPT重做简直要人命,无奈之下,放下了所有的工作,来研究研究蓝屏的原因,顺便正儿八经使用一下Typora。
Go是一门以并发编程见长的语言,它提供了一系列的同步原语方便开发者使用,例如sync包下的Mutex、RWMutex、WaitGroup、Once、Cond,以及抽象层级更高的Channel。但是,它们的实现基石是原子操作。需要记住的是:软件原子操作离不开硬件指令的支持。本文拟通过探讨原子操作——比较并交换(compare and swap, CAS)的实现,来理解Go是如何借助硬件指令来实现这一过程的。
Linux Signal想毕很多人都用过,比如在命令行下想要结束某个进程,我们会使用kill pid或者kill -9 pid,其实就是通过给对应的进程发送信号来完成。
指令汇总 1、数据传送指令 1.1、传送指令 指令的语法 举例 周期数 MOV reg,reg mov bp,sp 1 MOV mem,reg mov array[di],bx 1 MOV reg,mem mov bx,pointer 1 MOV mem,immed mov [bx],15 1 MOV reg,immed mov cx,256 1 MOV mem,ac
之前在栈溢出漏洞的利用和缓解中介绍了栈溢出漏洞和一些常见的漏洞缓解 技术的原理和绕过方法, 不过当时主要针对32位程序(ELF32). 秉承着能用就不改的态度, IPv4还依然是互联网的主导, 更何况应用程序. 所以理解32位环境也是有必要的. 不过, 现在毕竟已经是2018年了, 64位程序也逐渐成为主流, 尤其是在Linux环境中. 因此本篇就来说说64位下的利用与32位下的利用和缓解绕过方法有何异同.
当出现以上场景的时候,你该思考一下,是不是出现了内存破坏的情况了。而本文主要通过展示和分析常见的三种内存破坏导致覆盖相邻变量的场景,让读者在碰到类似的场景,不至于束手无策。而对于堆上的内存破坏,很常见并且棘手的场景,本人将在后续的文章和大家分享。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/details/41307953
进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
摘要:平常编程调试的过程中,我们可能会有这样的疑惑:“为什么使用硬件模拟器,比如bochs调试的时候,开始设置的调试断点都不会生效?”,“断点调试的本质是什么,为什么程序能够在特定的地方停留下来?既然程序是指令流,为何CPU没有一直执行下去?”,“在软件中断的情况下,如何进行调试?”。断点和单步执行是两个经常使用的调试功能,也是调试器的核心功能。本章我们将介绍IA-32 CPU是如何支持断点和单步执行功能的,然后逐一为你解答这些疑问。
本文介绍了在Windows系统漏洞挖掘过程中,利用系统异常处理流程中的ATL thunk emulation,绕过DEP保护,达到控制内存、执行任意代码的目的。通过漏洞利用技术,可以绕过一些安全措施,使得攻击者可以执行恶意代码。
在内核中的许多地方, 如果要将CPU分配给与当前活动进程不同的另一个进程, 都会直接调用主调度器函数schedule, 从系统调用返回后, 内核也会检查当前进程是否设置了重调度标志TLF_NEDD_RESCHED
考虑到分配的寻址可预测性,两个 可以在多个测试中进行观察: 1. 两个分配都按 16 页对齐,添加了 0x20 字节的标头 启用整页堆设置(或默认设置为 0x8)。 2. 两种分配的内存地址都是高度可预测的。 事实上,两个分配的地址会因测试而异 'just' 大约 0x1'000'000 字节,这在 0x19'000'000+0x12'000'000 几乎连续受控内存的术语 空间: ; 为便于阅读而编辑的 windbg 脚本日志 ; 通过重新启动应用程序并记录相同的分配产生 ; 显示两
众所周知,C 语言相比于汇编语言拥有更为强大的灵活性和抽象能力,但相较于汇编语言,C 语言又缺乏了直接寻址、读写内存的强大能力。 同时,C 语言由于具备更强大的抽象能力,往往会造成生成的机器指令过多,因此,对于嵌入式编程等领域的 C 语言程序设计来说,有一个非常常用的优化方式,就是将 C 语言编译后反汇编为汇编语言,然后通过阅读并精简汇编语言,来实现代码优化的目的。 那么,既然 C 语言、C++ 可以被编译器反汇编为汇编语言,我们是否可以直接通过汇编语言调用 C 语言或者让 C 语言去调用汇编语言呢?答案当然是可以的。 本文,我们就来详细介绍,如何在 linux 环境下实现 C 语言与汇编语言的相互调用。
在R0和R3时,FS段寄存器分别指向GDT中的不同段:在R3下,FS段寄存器的值是0x3B,在R0下,FS段寄存器的值是0x30.分别用OD和Windbg在R3和R0下查看寄存器(XP3),下图:
漏洞摘要 Adobe Acrobat Reader DC中存在一个释放后使用的漏洞,它允许攻击者使用当前用户的权限执行任意代码。 CVE CVE-2019-7805 信用证 独立的安全研究员已将此漏洞报告给SSD Secure Disclosure计划。 受影响的系统
领取专属 10元无门槛券
手把手带您无忧上云