首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nebula漏洞利用包CVE-2016-0189漏洞利用分析

VBScript的数组 VBScript 的数组的定义如下 ? 当访问数组元素时,VBScript引擎会调用 AccessArray 函数来计算元素的存放地址。...那么Mid(y(i), 3, 1) 正好是第四个字节开始的2个字节(注意Mid函数下表是 1 开始的),它存放的是对象的类型的值。 4个字节之后,则是对象的地址。...最后我们看一下,整个漏洞利用是如何工作的: 1)首先,创建一个 对象,通过上述的方法(1) 泄露该对象的地址; 2) 在该对象偏移为8的地方,利用方法(2)读取内存获取CSession对象指针; 3)然后在...IE浏览器在创建Shell.Application 对象时,会加载%systemroot%\system32\shell32.dll。通常情况下%systemroot%为c:\windows目录。...3)在脚本创建Shell.Application对象之前,利用WScript.Shell 来 修改 %system32%环境变量,指向1)创建的目录 4)创建Shell.Application 对象,从而自动加载

1.4K60
您找到你想要的搜索结果了吗?
是的
没有找到

JVM 入门到放弃之 Java 对象创建过程

对象创建 Java 是一门面向对象的编程语言,创建对象通常只是通过 new关键字创建。...对象创建过程 当虚拟机遇到一个字节码 new指令的时候,首先去检查这个指令的参数是否能够在常量池中定位到一个类的符号引用。并且检查这个符号引用代表的类是否被虚拟机类加载器加载。...完成上述流程,其实已经完成了虚拟机中内存的创建,但是我们在 Java 执行 new创建对象的角度才刚刚开始,我们还需要调用构造方法初始化对象(可能还需要在此前后调用父类的构造方法、初始化块等)。...如果构造方法中还有调用别的方法,那么别的方法也会被执行,当构造方法内的所有关联的方法都执行完毕后,才真正算是完成了 Java 对象创建。...整体对象创建流程如下: 对象内存分配 对象内存分配过程如下图所示: 为对象分配空间的任务实质上是 Jvm 的内存区域中,指定一块确定大小的内存块给 Java 对象。(默认是在堆上分配)。

52310

PyTorch入门视频笔记-数组、列表对象创建Tensor

数组、列表对象创建 Numpy Array 数组和 Python List 列表是 Python 程序中间非常重要的数据载体容器,很多数据都是通过 Python 语言将数据加载至 Array 数组或者...PyTorch 数组或者列表对象创建 Tensor 有四种方式: torch.Tensor torch.tensor torch.as_tensor torch.from_numpy >>> import...torch.as_tensor 三种方式可以将数组和列表转换为 Tensor,但是 torch.from_numpy 只能将数组转换为 Tensor(为 torch.from_numpy 函数传入列表,程序会报错); 程序的输出结果可以看出...Tensor 的数据类型和默认的全局数据类型一致,为 torch.FloatTensor,而使用 torch.tensor 函数创建的 Tensor 会根据传入的数组和列表中元素的数据类型进行推断,此时...PyTorch 提供了这么多方式数组和列表中创建 Tensor。

4.8K20

matinal:SAP ABAP 创建类开始学习面向对象编程

前言:SAP ABAP 创建类开始学习面向对象编程。...如下图: 接下来,为类创建一个带有客户ID作为可选参数的构造函数。构造函数然后数据库中获取客户的数据,并将对象的属性填充为数据库中获取的值。...然后,对象实例的属性用数据库中获取的结果填充。一个列,即结构体的组件,可以直接用“-”分隔符访问,例如,客户的姓名作为S_CUSTOMER-NAME可用。...构造函数然后数据库中获取客户的数据,并将对象的属性填充为数据库中获取的值。 要创建这个新方法,请返回类构建器,点击方法选项卡,然后进入更改模式。...以上内容为ABAP OO 新手提供了创建第一个ABAP对象的详细步骤,包括如何定义类、属性、构造函数和方法,以及如何在ABAP工作台中测试这些对象

15310

【一个小功能】js判断ie版本,浅谈navigator对象的appName属性

判断IE版本主要的是获取两个属性,a.当前浏览器名称,b.当前浏览器版本,为此不得不了解navigator对象。...browser_version.split(";"), //将平台版本信息按照;切割成数组 5 version = version_arr[1].replace(/\s/g, ""); //取上一步数组下标为1的元素...(“为了您更好的体验,请下载最新的浏览器”); 15 } 16 } 17 }; 作为一个初次了解navigator对象的人,对于appName属性(浏览器名称),你的直观感觉可能是,使用谷歌浏览器获取的就是...: 我们可以看看默认的IE11以及IE10部分版本的appName值情况 IE11 appName值 IE10 appName值 IE5 appName值 可以看出,版本低于11的IE版本,appName...(“;”)来进行切割,获取下标1的元素即可判断版本。

1.8K20

深入剖析最新IE0day漏洞

在2018年4月下旬,我们使用沙箱发现了IE0day漏洞;自从在野外发现上一个样本(CVE-2016-0189)已经有两年多了。许多方面来看,这个特别的漏洞及其后续的开发比较有趣。...寻找0day漏洞 我们VirusTotal (VT)开始搜寻0day漏洞,有人在2018年4月18日上传了一个有趣的漏洞。...一些过滤后的COM对象,被限制IActivationFilter在MSO.dll中创建 在分析时,筛选的CLSID列表包含16个条目。...这种技术允许使用IE引擎加载并呈现一个web页面,即使受害者机器上的默认浏览器设置为别的浏览器。 下载的HTML页面中的VBScript包含了函数名和混淆的整数值。 ?...在该超载方法的内部,为ArrA(1)成员创建了另一个引用。在这个点ArrB(1)引用ArrA(1),ArrA(1)拥有一个很快被释放的ClassVuln对象。 ?

75320

对象复制到对象创建:用原型模式提升你的编程水平!

今天,我们一起来分享创建型模式的最后一个模式:原型模式。 图片定义它的定义非常简单易懂。...用原型实例指定创建对象种类,并通过拷贝原型创建新的对象通俗点的说法就是:照着原来的实例创建一个新对象再通俗点:克隆一个对象实例原型模式简介上面关于原型模式定义已经说的很明白了。...Sheep sheep1 = (Sheep) sheep.clone(); System.out.println(sheep1); } }}这里要说明两个要点:克隆对象与原对象不是同一个对象...= sheep克隆对象与原对象的类型一样(原型-->原来的类型),即sheep.clone().getClass() == sheep.getClass()深/浅拷贝问题所谓浅拷贝,就是对象的成员属性是引用类型时...,克隆后的新对象中的成员属性引用的依旧是原对象中成员属性的内存地址。

38050

CVE-2018-8174:UAF到任意地址读写

attack” 揭露了利用“双杀”0day发起的APT攻击,其中使用的漏洞就是IE vbscript 0day:CVE-2018-8174,不久该样本就在互联网被公布。...array_a (1),并通过Erase array_a清空array_a中的元素,这时候在析构array_a中的元素的时候会触发脚本中Class_Terminate的调用,在Class_Terminate...显然eax已经在vbscript!VbsErase的调用栈中被释放了,vbscript!...此外VBScriptClass在+0x08处是保存了VBScriptClass成员变量和成员函数NameTbl对象(大小为0x88)的指针,NameTbl对象+0x48开始保存成员变量和成员函数的指针...首先在UAF函数中创建了一些VBScriptClass对象占据系统堆碎片为后面UAF准备,然通过触发漏洞获得指向已释放的Trigger对象内存的array_b,接着通过“Set mycls2 = New

96100

面向对象编程:创建类到封装与构造方法的探索

代码如何创建类? 在面向对象编程中,类是对一类事物的抽象,包含了静态的属性(成员变量)和动态的行为(成员方法)。...在Java中,创建类的格式如下: 修饰词 class 类名 { // 属性信息 // 行为信息 } public class Student { // 属性信息 String...使用类创建对象创建类后,我们可以使用该类来创建对象,通过对象来访问类中的成员。创建对象的语法如下: 类名 引用名称 = new 类名([参数]); 3....通过对象访问类中的成员 通过对象,我们可以访问类中的属性和方法。访问属性需要使用点操作符(.),并可以对属性进行赋值。访问方法同样使用点操作符,但需要加上括号。...构造方法 构造方法是创建对象的同时进行初始化的特殊方法。它的格式为: public 类名() { } Java默认提供无参构造方法,如果显示定义了构造方法,则不再提供默认的无参构造方法。

12010

常见Web技术之间的关系,你知道多少?

其中的内容可以修改和删除,同时也可以创建新的元素。HTML DOM独立于平台和编程语言。它可被任何编程语言诸如Java、Javascript和VBScript所使用。...HTML DOM就是HTML语言对外界开通的接口,以便其他语言能够访问或修改HTML内部的元素。 当js需要对html元素进行操作时,DOM是一个很必要的对象。...“200px”: “auto”);} XMLHTTP最通用的定义为:XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或接收XML及其他数据的一套...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest...来创建XmlHttp对象

2.8K20

无需Native Code的RCE——IE8中的写入原语利用

因此,我们不需要检查每个数组元素来找到gremlin。相反,我们可以检查每个0x100th元素(0x1000除以a的大小VARIANT),只要我们适当的索引开始。...惊喜 我在Windows 7上开发了这个漏洞,因为在Windows 10上不允许使用VBScript。...不久之后,James Forshaw 披露了他发现允许VBScript在Windows 10上运行的旁路。这让我可以在Windows 10上为IE编写一个漏洞利用版本。...清洁过程开始,它非常可靠。增强保护模式可以关闭或打开(但不是在具有64位渲染器进程的增强保护模式下)。启用增强保护模式后,生成的代码执行将受到IE EPM AppContainer的约束。...这种访问级别使得可以任意破坏数据结构,甚至可以预先手动创建内存中不存在的新对象实例。攻击者可以使用它来实现他们的目标,而无需执行任何单一的机器级指令。

1.2K40

Java 代码如何运行聊到 JVM 和对象创建-分配-定位-布局-垃圾回收

JVM 虚拟机中是如何创建的,在什么地方分配内存,又是如何分配的,对象是如何定位的,以及对象的内存布局,最后又是如何回收的。...1)对象创建 先在虚拟机栈创建栈帧,栈帧内创建对象的引用,在方法区进行类的加载,然后去 Java 堆区进行分配内存并内存初始化,再回到栈帧中初始化对象的数据,完成对象创建。...针对上面 Java 创建对象过程的例子。 ObjectA a = new ObjectA();类似这样创建对象的即是强引用,如果该引用存在,则垃圾回收器就不会回收它。...GC日志详细输出 -XX:+PrintGCDetails # GC输出时间戳 -XX:+PrintGCDateStamps # GC日志输出指定文件中 -Xloggc:/log/gc.log 小结 ...Java 代码如何运行的,聊到 JVM 内存布局,虚拟机参数的配置说明,Java 对象创建(new)过程,包括对象内存的堆分配、对象的定位、对象内存布局等,以及最后简单介绍了垃圾回收相关内容。

2.8K20

JavaScript学习笔记(一)——JS基础知识介绍

JavaScript 被用来改进设计、验证表单、检测浏览器、创建cookies,等等。...其实本质上讲javascript更像是一门函数式编程语言.而非面向对象的语言,它使用一些智能的语法和语义来仿真高度复杂的行为。其对象模型极为灵活、开放和强大,具有全部的反射性。...ASCII)都得到了应用,这方面基础 VBScript 做得很好。...JavaScript与DOM DOM是Document Object Model(文档对象模型)的简称,它是让javascript与页面交互的一种方式,能够动态修改文档中的节点,元素,属性等。...而IE的事件模型使用attachEvent和dettachEvent对事件进行绑定和删除。javascript中事件还分捕获和冒泡两个阶段,但是传统绑定只支持冒泡事件。

94520

CVE-2018-8174双杀漏洞分析复现及防御

该漏洞在当时影响最新版本的IE浏览器以及使用了IE内核的应用程序。用户在浏览网页或者打开Office文档的时候都可能中招。 微软在4月20号也确认了此漏洞,并在5月8号发布了官方补丁。...0:005> ln poi(0178afd0 ) //类对象地址 0178afd0 (6fb61748) vbscript!...00000000 //这个地址指向的就是00那个字符串, 003f9de4 00780000 00000074 003f93a4 4b92935b //由于windbg重新启动地址与上面不一致,但是周围的元素可以观察出是一致的...3.4.3.获取其余关键dll与函数地址 VBScript.dll 导入了 msvcrt.dll , msvcrt.dll 又导入了 kernelbase.dll 与 ntdll.dll ,遍历它们的导入表最终可以...四、复现过程 复现环境:Win7 x86sp1,IE8.0.7601.17514 使用Github的PoC,在上述背景内的环境下直接IE打开即可复现: ?

1.1K20

再谈BOM和DOM(4):DOM0DOM2事件处理分析

事件源对象,当前事件在操作的对象,如元素节点,文档对象,window对象,XMLHttpRequest对象等。 事件监听器,当一个事件源生成一个事件对象时,它会调用相应的回调函数进行操作。...在IE中,事件对象恒为全局属性window.event的分身。...微软在网页技术上加入了不少专属事物,既有VBScript、ActiveX、以及微软自家的DHTML格式等,使不少网页使用非微软平台及浏览器无法正常显示。DOM即是当时蕴酿出来的杰作。...实事件的兼容性问题特别的多,比如获取事件对象的方式、绑定和解除绑定事件的方式、目标元素的获取方式等等,由于古老的浏览器现在基本被淘汰,所以也没有必要讲了。...元素开始发生,一直到目标元素 目标阶段 --- 事件触发 冒泡阶段 --- 目前元素开始发生,一直到window元素 事件模型 IE中采用的事件流是事件冒泡,先从具体的接收元素,然后逐步向上传播到不具体的元素

77910

没有本机代码的RCE:利用INTERNET EXPLORER中的写入内容

因此,查找gremlin时,我们不必检查每个数组元素。相反,只要我们适当的索引开始查找的好,只需检查每个第0x100(0x1000除以VARIANT的大小)处的元素即可。...为此,我们可以先将任意对象放入ar1(gremlin+1)元素中,然后,使用gremlin作为读取原语来“泄露”该对象的地址: 图3:泄漏目标对象的地址 图3展示了我是如何将gremlin与后续数组元素结合使用的...在调用对象的方法或属性时,调度机制会封装脚本提供的参数,将它们转换为基于本机堆栈的参数,最后调用实现所需方法或属性的本机函数。因此,调度机制完成了脚本到本机函数进行调用所需的所有繁重的工作。...不久之后,James Forshaw公开了一种绕过技术,使得VBScript可以在Windows 10上顺利运行。这样一来,我就可以为Windows 10上的IE编写相应的漏洞利用代码了。...这种访问级别使得破坏任意数据结构成为可能,甚至可以手工创建先前并不存在于内存中的新对象实例。攻击者无需执行任何机器级指令,就可以通过该命令达到其目的。

1.2K20
领券