UAF漏洞利用原理分析

UAF漏洞

Use After Free
利用原理
UAF漏洞是一块内存被释放后又被使用。
操作系统将新申请的内存的指针指向了已经被释放的内存且被释放的内存指针不为null,则会出现悬挂指针,在新申请的块写入数据,就会覆盖已经被释放的内存块

1、申请一块存储int类型的内存,大小为4字节,标记为test,赋值255
2、释放test
3、申请一块和test大小一样的内存4字节,标记为hacker 赋值1024
4、看结果显示hacker的数值,已经覆盖了test的数值

代码如下

#include <iostream>

int main()
{
    system("chcp 65001");
    using namespace std;
    int *test; 
    cout << "---------申请test内存块----------------" << endl;
    test=new int;
    *test=255;
    cout << "test 地址: " << test << endl;
    cout << "test 值: " << *test << endl;
    cout << "---------释放test内存块----------------" << endl;
    delete test;
    int *hacker;
    cout << "-----------申请hacker内存块-------------" << endl;
    hacker=new int; //申请与test块相同大小的内存块
    *hacker=1024;
    cout << "hacker 地址: " << hacker << endl;//和之前test块地址是一样的,由于内存的管理机制,我们申请的内存块与我们所释放的内存块地址是一样的
    cout << "hacker 值: " << *hacker << endl;
    cout << "test 值: " << *test << endl; //发现hacker块的值覆盖了test块的值
    delete hacker;
    system("pause");
    return 0;
    
}

下面是程序的运行情况
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值