C# 缓冲区溢出漏洞演示

本文揭示了一个鲜为人知的事实:即使在C#这种被认为是相对安全的语言中,也存在缓冲区溢出的现象。通过一个具体的实例,详细阐述了C#如何发生缓冲区溢出,以及利用不安全代码修改内存中的值,甚至可能影响函数地址,达到执行远程代码的风险。
摘要由CSDN通过智能技术生成

用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。

本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的!


首先建立一个C# Console工程,并开启工程的“允许不安全代码”选项

键入代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            char ori = 'A';
            StackOverflow();
            
            Console.WriteLine(ori);
            Console.ReadLine();
        }

        static unsafe void StackOverflow()
        {
            int* p = stackalloc int[1]; //声明一个int数组指针
            int i = sizeof(int); //指针增量

            while (*p != (int)'A') //找到Main函数中的ori变量
            {
                p += i;
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("Address: {0}", (int)p); //输出当前指针所指向的地址
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值