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

对 UAF 漏洞 CVE-2016-0167 的分析和利用

;在发送消息的函数调用返回后,函数 xxxMNDestroyHandler 没有重新验证目标弹出菜单对象内存的有效性而继续对其进行访问。...,而函数在没有重新验证弹出菜单对象内存有效性的情况下继续对其成员域进行访问,这将导致 UAF 的触发。...该拥有者窗口对象同时将作为与弹出菜单关联的通知窗口对象。...验证代码判断 tagCWPSTRUCT 对象的成员域 message 的值,当 message 值为 WM_NCCREATE 枚举值、并且到目前为止前面的事件通知处理程序只记录了根菜单窗口对象的句柄而尚未记录子菜单窗口对象句柄时...此时记录该窗口句柄,并通过调用 SendMessage 函数向根菜单窗口对象发送 MN_CANCELMENUS 取消菜单的消息。

1.1K30

对 UAF 漏洞 CVE-2015-2546 的分析和利用

接下来函数将该句柄转换成窗口对象指针,如果该指针指向真实的菜单窗口对象,则直接将该指针作为返回值返回。...0x3 验证 通过在桌面点击鼠标右键,并使鼠标指针指向某个作为子弹出菜单入口的子菜单项(如“新建”命令)以尝试使执行流触达漏洞所在的位置,我发现始终无法命中,这是由于系统每次向目标菜单窗口发送 MN_SETTIMERTOOPENHIERARCHY...验证代码判断当前的目标窗口对象句柄是否为先前存储的子菜单窗口句柄,如果是的话则修改目标窗口对象的消息处理函数为自定义的 xxHintMenuWindowProc 消息处理函数。...在函数 xxxSendMessage 返回后,函数 xxxMNMouseMove 并没有从目标菜单窗口对象的扩展区域重新获取该指针,也没有对寄存器中存储的地址进行验证,就直接将该地址作为参数传入函数 xxxMNHideNextHierarchy...对该漏洞的利用总体来讲比 CVE-2017-0263 的利用更为简单,对 CVE-2017-0263 的利用代码几乎可以不经修改地对该漏洞使用,同时也没有任何被破坏需要修复的内核对象存在。

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从 CVE-2017-0263 漏洞分析到 Windows 菜单管理组件

    xxxMNEndMenuState 中释放全局菜单状态对象的成员域 pGlobalPopupMenu 指向的根弹出菜单对象时,没有将该成员域置零,导致该成员域仍旧指向已被释放的内存区域成为野指针,在后续的代码逻辑中存在该成员域指向的内存被读写访问或被重复释放的可能性...这时问题就出现了:函数 xxxMNEndMenuState 在将菜单状态结构体对象的成员域 pGlobalPopupMenu 指向的弹出菜单对象释放之后,却没有将该成员域置为空值,这将导致该成员域指向的内存地址处于不可控的状态...函数 HMUnlockObjectInternal 通过目标对象的句柄在全局共享信息结构体 gSharedInfo 对象的成员域 aheList 指向的会话句柄表中找到该对象的句柄表项,然后通过在句柄表项中存储的句柄类型在函数...tagPOPUPMENU 对象的成员域数据 ---- 伪造弹出菜单对象成员域 前面伪造的 tagPOPUPMENU 对象重新占用了先前释放的根弹出菜单对象的内存区域,并且其各个成员域在利用代码中分配时可以实施完全控制...该函数验证通过参数传入的句柄是否为菜单句柄。函数通过将句柄值和菜单类型枚举 2(TYPE_MENU) 传入函数 HMValidateHandle 调用,并判断函数返回值是否不为空,并返回判断的结果。

    73210

    自动化测试中对Alert, 多窗口,下拉框的处理

    在web测试中,特别是在注册页面,或者点击XX链接,还会弹出一些子窗口,在手工测试中,可以很轻松的实现在多个窗口之间进行切换操作,很幸运的,selenium也提供了处理的过程,处理的过程是先获取到所有的窗口句柄...,再获取到当前窗口的句柄,判断是否是当前窗口,如果是,就可以对当前窗口进行操作,如果不是,就是另外一个窗口,从而对另外一个窗口进行操作。...window_handles()是返回所有窗口句柄current_window_handle和window_handles都是对窗口句柄的处理,一般使用的场景是在自动化测试中,某些时候,在当前页面,点击一个链接...: 1、 在当前页面,先获取当前页面窗口的句柄; 2、 点击跳转到新的页面,获取所有窗口句柄; 3、 使用if判断是在当前窗口还是在新的窗口,判断不是当前窗口,在新的窗口操作,操作完成后,关闭新的窗口;...已百度登录页面为实例,点击立即注册,会弹出注册的窗口,见该效果图以及测试脚本: ?

    3.2K40

    菜单的使用

    我们点击的这个菜单称为弹出式菜单 3)菜单项:每一个可选菜单项被赋予一个唯一的ID,当用户单击某个菜单项时Windows会将该菜单项的ID发送给父窗口,父窗口通过WM_COMMAND消息处理菜单的单击消息...,但是弹出式菜单没有ID,WM_COMMAND消息也不处理弹出式菜单的点击信息 4)菜单加速键:主要是多个键的组合,当同时按下这些键的时候相当于点击了菜单的某个菜单项 5)菜单项一般具有“可用”(Enabled...uIDNewItem, // 新菜单项的ID,如果是弹出式菜单、则使用菜单的句柄 LPCTSTR lpNewItem //该值取决于第二个参数,若为MF_STRING则应该是一个以0结尾的字符串...ID,如果是弹出式菜单、则使用菜单的句柄 LPCTSTR lpNewItem //该值取决于第三个个参数,若为MF_STRING则应该是一个以0结尾的字符串 ); 下面是一个使用这种方式的例子 #...)、右对齐(右上角坐标为该坐标)、中间对齐(上边线的中点坐标为该坐标); int nReserved, // 该参数必须给0 HWND hWnd, // 显示快捷菜单的窗口句柄

    1.3K40

    selenium最大化浏览器-Web UI自动化测试之Selenium工具篇

    :   在浏览器的一个生命周期内(开启到关闭),任意一个窗口都有唯一的一个句柄值,可以通过句柄值完成窗口切换操作。...句柄:handle,窗口的唯一标识码。在中封装了获取当前窗口句柄、获取所有窗口句柄和切换到指定句柄窗口的方法。   ...-1索引 对应的值始终是 最新窗口的句柄值) driver.switch_to.window(handles[-1])   代码:    # 获取所有窗口句柄(包括新窗口)...在中并没有对验证码处理的方法,在这里我们介绍一下针对验证码的几种常用处理方式。   ...设置元素等待的原因:   分类:隐式等待、显式等待、强制等待   隐式等待:定位元素时,如果能定位到元素则直接返回该元素,不触发等待;如果不能定位到该元素,则间隔一段时间后再去定位元素;如果在达到最大时长时还没有找到指定元素

    1.9K20

    C# 开发技巧]如何防止程序多次运行 线程 进程

    要保证该程序进程只有一个,我们就要判断下该程序进程是否在自己的操作系统上运行了,如果已经运行了一个进程,当我们下次运行exe的时候,此时不是再开启该程序进程,而是退出,弹出一个提示框告诉用户该程序已经运行...从而这个问题就转换为判断该程序进程的数量问题了,此时我们就想.NET 有没有提供一个类可以获得该进程名的数量,如果数量大于1则说明该程序已经运行了,小于就表明程序没有运行。...并且提示给用户说该程序已经运行。...,并且激活该窗口。...= currentproc.Id) { // 如果进程的句柄为0,即代表没有找到该窗体,即该窗体隐藏的情况时

    1.7K30

    浏览器中的JavaScript核心BOM(浏览器对象模型)重点掌握对象之Window对象的属性与方法

    open() 方法共有4个可选的参数: 第一个参数是即将打开的新窗口的URL,若没有该参数,则打开一个空白页 第二个参数是即将打开的新窗口的名字。...若没有该参数,则会使用指定的名字 _blank 打开一个新的 、未命名的窗口 第三个参数是一个字符串,字符串里是 属性名1=值1, 属性名2=值2 这样的形式,用来设置新打开窗口的一些状态样式。...例如,我们设置该参数为 newWindow,第一次调用 open() 函数,会去查看当前浏览器是否有一个窗口名字叫做newWindow,若没有则会打开一个名为 newWindow 的窗口,那当我们第二次调用...第四个参数 这个参数我暂时是没有看出有什么实际的用处,如果大家有知道的可以评论区告诉我。...prompt() 该方法传入一个字符串作为参数。执行时,弹出一个框,字符串作为内容展示在框内,并且框内还有一个文本框,用户可以在文本框内输入内容。

    1.7K20

    如何防止程序多次运行

    下面只要分享我的一个思考的这个问题的方式: 当我们点击一个exe文件时,此时该exe程序将会运行,我们可以看到该程序的界面,对于计算机而言,就是会在系统上开启一个该程序的进行,这个我们可以通过任务管理器来查看的...要保证该程序进程只有一个,我们就要判断下该程序进程是否在自己的操作系统上运行了,如果已经运行了一个进程,当我们下次运行exe的时候,此时不是再开启该程序进程,而是退出,弹出一个提示框告诉用户该程序已经运行...并且提示给用户说该程序已经运行。...,并且激活该窗口。...= currentproc.Id) { // 如果进程的句柄为0,即代表没有找到该窗体,即该窗体隐藏的情况时

    1.9K30

    c语言findwindow函数_findwindow函数

    大家好,又见面了,我是你们的朋友全栈君。...函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。...,第二个是要找的窗口的标题。...但有的软件的标题不是固定的,如”记事本”,如果打开的文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便。如果找到了满足条件的窗口,这个函数返回该窗口的句柄,否则返回0。...可如果窗口的标题不固定或者根本就没有标题,怎么得到窗口的类呢?这时我们可使用Microsoft Spy++,运行Spy++,按ALT+F3,在弹出的界面中拖动目标图标到程序上即可。

    55540

    Selenium自动化工具集 - 完整指南和使用教程

    Selenium 的安装与环境配置: 以下是基本的安装和环境配置步骤: 安装 Python 和 pip:确保已经安装了 Python,并使用以下命令验证安装是否成功: python --version...: 在 Selenium 中,可以使用以下方法处理浏览器窗口切换和处理弹出框: 窗口切换: # 切换到指定窗口 driver.switch_to.window("window_handle") 弹出框处理...:使用 window_handles 属性获取所有窗口句柄,并使用 switch_to.window() 方法切换窗口。...以下是示例代码: # 获取当前窗口句柄 current_handle = driver.current_window_handle # 获取所有窗口句柄 all_handles = driver.window_handles...你需要将 "property" 替换为要获取的具体属性名称,比如 "color"、"font-size" 等。获取到的属性值将存储在变量 css_property 中。

    2K11

    Selenium2+python自动化29-js处理多窗口

    前言 在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解:Selenium2+python自动化13-多窗口、句柄(handle)),这样在多个窗口之间来回切换比较复杂,那么有没有办法让新打开的链接在一个窗口打开呢...要解决这个问题,得从html源码上找到原因,然后修改元素属性才能解决。很显然js在这方面是万能的,于是本篇得依靠万能的js大哥了。...一、多窗口情况 1.在打baidu的网站链接时,会重新打开一个窗口 (注意:我的百度页面是已登录状态,没登录时候是不会重新打开窗口的) ?...2.为了验证这个问题,可以切换到html编辑界面,手动去掉“_blank”属性 ? 3.删除“_blank”属性后,重新打开链接,这时候会发现打开的新链接会在原标签页打开。 ?...,定位该元素的class属性 3.定位到该元素后直接修改target属性值为空 ?

    1.5K40

    加点JavaScript魔法

    这对我来说要做的就不止这些了,因为我想对服务器进行Ajax调用以获取内容,并且只有当收到服务器的响应时,我才希望弹出窗口出现。...我要运行的函数将搜索页面中用户名的所有链接,并使用Bootstrap中的弹出窗口组件配置它们。 jQuery JavaScript库作为Bootstrap的依赖项加载,因此我将利用它。...这个函数将在页面加载完成时运行,并且当完成时,将为所有页面配置悬停和弹出行为。现在我要集中精力来寻找链接。 回顾第十四章,在实时翻译中被调用的HTML元素具有唯一的ID。...如果用户将鼠标指针移动到其中一个用户链接中,并在移动它之前停留了半秒钟,我不希望该timer继续运行并调用显示弹出窗口的函数。...我已经用manual触发模式,HTML内容,没有淡入淡出的动画(这样它就会更快地出现和消失)配置了这个弹出窗口,并且我已经将父元素设置为元素本身,所以悬停行为通过继承扩展到弹出窗口。

    3.9K10

    三种切换

    遇到“noSuchElement”原因是把元素放在iframe里面,根本就找不到。 按f12,html里面嵌套的html,嵌套的不一定和外面的html页面一样,例如孩子和妈妈也不一定是一模一样。...1.怎么知道我要操作的元素是否在iframe中? ? 看下这个就能看出是否在iframe中。 如果我要操作的元素在iframe中,那么先过了这关,再去操作旗下的内容。 2.那怎么切换呢?...,控件都有自己的Handle 1.怎么知道这个窗口的句柄是什么?...1.首页知道目前有多少窗口打开的。 2.窗口的句柄是哪些。 3.然后找到句柄切过去。...例如窗口切换的句柄,获取句柄总数,然后通过句柄所在的窗口位置来切换。 iframe的下标,name属性,WebElement对象都是可以切换的。

    1.1K10

    安装包制作工具 SetupFactory使用1 详解 下一篇》安装包制作工具 SetupFactory使用2 API清单

    第5步:窗口设置 该步骤提供为安装软件的窗口设置信息。该步骤不是主要步骤,属于锦上添花的功能,随便设置一下即可。   我们就选择“向导”。点击“下一步”按钮, ?   ...清单》 点击“确定”按钮完成配置,在安装的过程中就会弹出该辅助程序安装界面。...或者点击“列表中的序列号”空白处,右键点击,同样弹出命令选项,选中“生成”项,弹出“生成序列号”窗口。 ?   输入“要生成的序列号数量”,选择“生成随机的序列号”与序列号的掩码格式。...弹出“Screens Properties”窗口:   在红色框内输入相关描述信息,在安装过程中就会出现该内容。   点击“添加”按钮,弹出“编辑字段属性”窗口。 ?   ...选择”我同意该许可协议的条款“,点击”下一步“按钮 ? 可以修改名称与公司信息,点击”下一步“ ? 可以更改默认安装路径,点击”下一步“按钮 ?

    2.7K20

    AngularDart Material Design 工具提示 顶

    Inputs: alignPositionX String  弹出窗口在水平方向上的对齐方式。 可能的值是:        start:将弹出窗口对齐到容器的开头。...alignPositionY String 弹出窗口在垂直方向上的对齐方式。 可能的值是:        start:将弹出窗口对齐到容器的开头。 这相当于'flex-start'。...Supported Content: 以下选择器自动设置为工具提示规范: header footer 非header/footer内容被赋予工具提示正文样式。...它是一个“小”的工具提示,它最多应该是一行或两行,并且最大宽度为320px。 通常,工具提示与图标或按钮相关联,并提供有关该元素的标签或简要帮助文本。...此组件应与TooltipTarget组件一起使用,该组件控制其可见性并提供工具提示所针对的基础HtmlElement。

    1.3K20

    32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式

    打开后会弹出 ?...,如果你没有安装,或者没有配置环境变量,那么计算机就会找不到编译器,进而你的/c /coff就是错误的,所以一定注意要设置环境变量,如果不会环境变量的配置,请继续往下看, 如果会环境变量的配置,则直接跳到第二个标题...,注入32位计算机,并且弹出个信息框 一丶远程线程注入的讲解 在讲解汇编程序注入代码的时候,我们需要先明白,远程线程注入的原理,我会写一个远程线程开发的例子,这样有助于我们理解汇编注入 我们总共需要几步.../*1.查找窗口,获取窗口句柄*/ /*2.根据窗口句柄,获得进程的PID*/ /*3.根据进程的PID,获得进程的句柄*/ /*4.根据进程的句柄,给进程申请额外内存空间...;这些变量都是定义在窗口过程函数中 第一步,判断按钮ID,并且查找窗口句柄 ;1.解析低位,获得按钮消息,并且查找窗口句柄 invoke FindWindow,NULL, offset g_szWindowName

    2.8K60

    【Vivado那些事】创建不包含源文件的IP

    有时候我们想参考官方的源码,但是有些IP怎么也找不到官方的源码,具体原因是什么呢? 下面从下面两种Vivado创建IP的流程看下具体的原因: ?...在该对话框中,定位到gate.edf文件。可以看到在“Add Sources”对话框中添加了gate.v文件,并且注意下面的设置。...第二步:弹出“Settings”对话框。在该对话框左侧的窗口中,找到并展开“IP”选项。在展开项中,找到并选择“Packager”选项。在对话框右侧的窗口中,按如下参数进行设置。 ?...看到此时的界面为空的,并没有像前面封装包含源文件IP的时候出现“DELAY”参数,这是因为“DELAY”参数对于Verilog HDL而言是行为级描述,在综合的时候不起任何作用。...调用并验证不包含源文件的IP 设计 调用和使用完全和之前的章节一样,这里就不再赘述。

    2.9K11
    领券