初探UAF漏洞(1)

2024-01-10 11:52
文章标签 漏洞 初探 uaf

本文主要是介绍初探UAF漏洞(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UAF介绍

看下面一段代码:

结果为:

指针p1指向了一块大小为10字节的堆空间,并存入了一个字符串“hello”,随即释放了该堆空间,但并未将指针p1指向null,这将导致指针p1仍然能够使用。

紧接着指针p2指向了一块新申请为10字节的堆空间,并存入了一个字符串“world”,此时打印p1,p2的地址和字符串,发现p1和p2地址相同,并且此时能通过p1打印出“world”。

在free一块内存后,接着申请大小相同的一块内存,操作系统会将刚刚free掉的内存再次分配。

通过p2能够操作p1,如果之后p1继续被使用,则可以达到通过p2修改程序功能等目的,这也是UAF(use after free)的含义。

利用UAF漏洞,总结如下几个步骤:

  1. 申请一块内存以后释放掉它,但是没有清空该内存的指针

  2. 重新申请一块同样大小的内存,此时这两个指针对指向同一块内存

  3. 对第一步的指针进行操作,它将会影响到第二步申请的指针指向的内存

定位漏洞点

在释放了g_UseAfterFreeObjectNonPagedPool对应的堆空间后,并没有将该指针指向null。

导致后续如果有继续使用g_UseAfterFreeObjectNonPagedPool该全局变量,将会导致UAF漏洞。

该函数名称为FreeUaFObjectNonPagedPool

相关函数

查看g_UseAfterFreeObjectNonPagedPool的交叉引用,看还有那些函数使用了该全局变量。

其中AllocateUaFObjectNonPagedPool的作用是申请一块内存

UseUaFObjectNonPagedPool为执行g_UseAfterFreeObjectNonPagedPool指针

FreeUaFObjectNonPagedPool负责释放堆空间

有了以上函数我们还需要重新申请一块相同大小的内存来控制g_UseAfterFreeObjectNonPagedPool

AllocateFakeObjectNonPagedPoolIoCtrlHandler

这篇关于初探UAF漏洞(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/590712

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

Java反序列化漏洞-TemplatesImpl利用链分析

文章目录 一、前言二、正文1. 寻找利用链2. 构造POC2.1 生成字节码2.2 加载字节码1)getTransletInstance2)defineTransletClasses 2.3 创建实例 3. 完整POC 三、参考文章 一、前言 java.lang.ClassLoader#defineClass defineClass可以加载字节码,但由于defineClas

Java注解初探

什么是注解 注解(Annotation)是从JDK5开始引入的一个概念,其实就是代码里的一种特殊标记。这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。有了注解,就可以减少配置文件,现在越来越多的框架已经大量使用注解,而减少了XML配置文件的使用,尤其是Spring,已经将注解玩到了极致。 注解与XML配置各有

【vulhub】thinkphp5 2-rce 5.0.23-rce 5-rce 漏洞复现

2-rec 1.启动环境  cd /.../vulhub/thinkphp/2-rce # cd进入2-rce靶场文件环境下docker-compose up -d # docker-compose启动靶场docker ps -a # 查看开启的靶场信息 2.访问192.168.146.136:8080网页 3.构造payload http

【漏洞复现】赛蓝企业管理系统 GetJSFile 任意文件读取漏洞

免责声明:         本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规或服务协议。同时,未经授权地访问系统、网络或应用程序可能导致法律责任或其他严重后果。作者不对读者基于本文内容而产生的任何行为或后果承担

【网络安全】Jenkins任意文件读取漏洞及检测工具(CVE-2024-23897)

原创文章,不得转载。 文章目录 漏洞成因影响范围检测工具更多细节 漏洞成因 Jenkins CLI 接口存在任意文件读取漏洞(CVE-2024-23897)。该问题源于 args4j 库在解析文件名参数时,会将@符号后的字符串视为文件名并尝试读取文件,而且该功能默认处于启用状态。 影响范围 Jenkins weekly <= 2.441 Jenkins LTS <=

MyBatis-Plus 框架 QueryWrapper UpdateWrapper 方法修复sql注入漏洞事件

什么是漏洞? 漏洞是指软件、系统或网络中存在的安全弱点或错误,这些弱点可能导致系统遭受攻击或被不当使用。在计算机安全领域,漏洞通常源于编程错误、设计缺陷或配置失误。 对于对象关系映射(ORM)框架来说,漏洞通常指的是设计或实施中的安全问题,这些问题可能让应用程序面临SQL注入攻击的风险。 SQL 注入漏洞 如果ORM框架在执行SQL操作时没有正确过滤或转义用户输入,攻击者可以利用输入的恶意数据

XSS 漏洞检测与利用全解析:守护网络安全的关键洞察

在网络安全领域,跨站脚本攻击(XSS)是一种常见的安全漏洞。XSS 漏洞可以让攻击者在受害者的浏览器中执行恶意脚本,从而窃取用户的敏感信息、篡改页面内容或者进行其他恶意操作。本文将介绍 XSS 漏洞的检测和利用方法。 一、XSS 漏洞的概念和类型 (一)概念 跨站脚本攻击(XSS)是指攻击者在网页中注入恶意脚本,当用户访问该网页时,恶意脚本在用户的浏览器中执行,从而达到攻击的目的。 (

代码执行漏洞-Log4j2漏洞

1.执行以下命令启动靶场环境并在浏览器访问 cd log4j/CVE-2021-44228docker-compose up -ddocker ps 2.先在自己搭建的DNSLOG平台上获取⼀个域名来监控我们注⼊的效果 3.可以发现 /solr/admin/cores?action= 这⾥有个参数可以传,可以按照上⾯的原理 先构造⼀个请求传过去存在JNDI注⼊那么ldap服务端会执⾏