用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许
生活随笔
收集整理的這篇文章主要介紹了
用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用過C#的朋友可能認為它是一種十分安全的語言,其實C#也可以做到經典的緩沖區溢出。
本文章將用一個實例來描述C#究竟是如何發生緩沖區溢出的!
首先建立一個C# Console工程,并開啟工程的“允許不安全代碼”選項
鍵入代碼:
[csharp]?view plaincopy print?
程序在找到‘A’的ASCII碼后跳出循環。
其實程序的原理是:
p指針指向int數組的第一個元素,指針每次增加一個int的內存空間,由于數組的大小為1,所以兩次循環后就溢出并指向在其前面的內存變量。最終找到ori所在的內存地址。
下面我們嘗試修改ori的值,將其從‘A’修改為‘!’,there we?Go:
這樣修改代碼:
經過這樣的修改,再次運行:
可以看到ori被徹底修改為‘!’了。如果用這種方式將函數的地址進行修改就可以達到執行遠程代碼的目的了。
總結
以上是生活随笔為你收集整理的用过C#的朋友可能认为它是一种十分安全的语言,其实C#也可以做到经典的缓冲区溢出。 本文章将用一个实例来描述C#究竟是如何发生缓冲区溢出的! 首先建立一个C# Console工程,并开启工程的“允许的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在使用win 7 无线承载网络时,启动该
- 下一篇: fiddler,他和其他抓包软件有什么区