首页 > 其他分享 >网络安全攻防之缓冲区溢出攻击

网络安全攻防之缓冲区溢出攻击

时间:2022-12-06 17:36:33浏览次数:39  
标签:网络安全 攻防 攻击 代码 攻击者 内存 缓冲区 溢出

什么是缓冲区溢出?

缓冲区溢出是一种异常现象,当软件向缓冲区中写入数据使缓冲区容量溢出时,会导致相邻存储器位置被覆盖。换句话说,过量的信息被传递到没有足够空间的容器中,而这些信息最终会替换相邻容器中的数据。

攻击者可以利用缓冲区溢出修改计算机的内存,以破坏或控制程序的执行。

网络安全攻防之缓冲区溢出攻击_缓冲区溢出

什么是缓冲区?

缓冲区或数据缓冲区是一个物理内存存储区,用于在将数据从一个位置移到另一位置时临时存储数据。这些缓冲区通常位于 RAM 内存中。计算机经常使用缓冲区来帮助提高性能。

大多数现代硬盘驱动器都利用缓冲的优势来有效地访问数据,并且许多在线服务也使用缓冲区。例如,在线视频传送服务经常使用缓冲区以防止中断。流式传输视频时,视频播放器一次下载并存储 20% 的视频到缓冲区,然后从该缓冲区进行流式传输。这样,连接速度的小幅下降或快速的服务中断都不会影响视频流性能。

缓冲区旨在容纳特定数量的数据。除非利用缓冲区的程序具有内置指令以在将太多数据发送到缓冲区时丢弃数据,否则程序将覆盖缓冲区附近的内存中的数据。

如何利用缓冲区溢出进行攻击?

攻击者可以故意将精心制作的输入馈入程序,程序将尝试将该输入存储在不够大的缓冲区中,因此输入会覆盖连接到缓冲区空间的部分内存。如果程序的内存布局定义明确,则攻击者可以故意覆盖已知包含可执行代码的区域。然后,攻击者可以用自己的可执行代码替换这些代码,这可以大大改变程序的工作方式。

例如,如果内存中的被覆盖部分包含一个指针(指向内存中另一个位置的对象),则攻击者的代码可以用另一个指向漏洞利用有效载荷的指针来替换该代码。这样就可以将整个程序的控制权转移给攻击者的代码。

缓冲区溢出攻击的类型有哪些?

缓冲区溢出攻击有很多类型,它们采用不同的策略并针对不同的代码段。以下是一些最著名的类型。

  • 堆栈溢出攻击 - 这是最常见的缓冲区溢出攻击类型,涉及到调用堆栈*上的缓冲区溢出。
  • 堆溢出攻击 - 这种类型的攻击针对开放的内存池中称为堆*的数据。
  • 整数溢出攻击 - 在整数溢出中,算术运算得出对于要存储结果的整数类型而言太大的整数;这可能导致缓冲区溢出。
  • Unicode 溢出 - Unicode 溢出通过将 Unicode 字符插入需要 ASCII 字符的输入中来创建缓冲区溢出。(ASCII 和 unicode 是使计算机表达文本的编码标准。例如,字母“a”由 ASCII 中的数字 97 表达。虽然 ASCII 码仅用于表达西方语言中的字符,但 unicode 可以为地球上几乎所有书面语言创建字符。因为 unicode 中有更多可用的字符,所以许多 unicode 字符大于最大的 ASCII 字符。)

谁容易受到缓冲区溢出攻击?

C 和 C++ 这两种脆弱性较高的热门语言,因为它们不包含内置的保护措施以防止访问或覆盖内存中的数据。Windows、Mac OSX 和 Linux操作系统 都包含用这两种语言编写的代码。

Java、PERL 和 C# 等更现代的语言具有内置特性,可帮助减少缓冲区溢出的机会,但不能完全阻止缓冲区溢出。

如何防范缓冲区溢出攻击?

现代操作系统具有运行时保护,可帮助防护缓冲区溢出攻击。我们来探讨有助于防护漏洞利用风险的 2 种常见保护措施:

  • 地址空间随机化 - 随机重新排列进程的关键数据区的地址空间位置。缓冲区溢出攻击通常依赖于了解重要的可执行代码的确切位置,地址空间的随机化可以使这种了解几乎不可能。
  • 防止数据执行 - 标记内存的某些区域(可执行或不可执行),防止漏洞利用运行不可执行区域中的代码。

软件开发人员还可以通过使用内置保护的语言编写或在其代码中使用特殊的安全性程序,来预防缓冲区溢出漏洞。

尽管存在上述预防措施,但开发人员仍然发现了新的缓冲区溢出漏洞,有时是在遭遇成功的漏洞利用之后。发现新漏洞时,工程师需要修补受影响的软件,并确保该软件的用户可以获取补丁。

标签:网络安全,攻防,攻击,代码,攻击者,内存,缓冲区,溢出
From: https://blog.51cto.com/u_14573321/5916403

相关文章

  • 攻防世界-fileinclude
    一道简单的文件包含题目,源代码如下 一、代码分析此题中关键代码为  分析此处代码可知,$lan的值是cookie中language所对应的值,当该值不为english时,会将$lan的值与.p......
  • 攻防世界 php_rce
    我们进入界面,看到的是一个php框架的界面。我们需要找的是这个框架的漏洞。我还刷新了几次。我以为是卡了(我也太菜了吧。。)题目提示是thinkphpv5这是一个大的版本,我......
  • 2022-2023-1学期 20221417 《计算机基础与程序设计》实验七-缓冲区溢出
    1.实验指导书内容2.缓冲区溢出的原理3.缓冲区溢出的防范实验指导书内容https://blog.csdn.net/weixin_43771137/article/details/128063046缓冲区溢出原理缓冲......
  • 攻防世界 reverse 666及其知识点
    攻防世界reverse 666 用ida64打开:     双击main函数打开.   汇编语言看不懂,直接按f5进行反编译.得到c语言主函数:   意思是定义名为s和......
  • 攻防世界 XSCTF 联合招新赛 QR1
    一张空白的图片?图片宽高都很大,默认比例下看着像空白的,但放大之后能看到一个个小点。转成PNG或者JPG,导入PhotoShop之后拉阈值就能看到完整二维码了,扫码获得flag......
  • 科普 | 数据安全与网络安全(一)概念篇
    当我们介绍天空卫士的时候,通常会强调我们是一家专注于数据安全技术的企业。这时,“童鞋们”的脑子里是不是产生了一个大大的问号?What? 数据安全和网络安全有什么区别?Where?......
  • 攻防世界 MISC 方向难度一全解 (挖坑待填)
    删库跑路-某星星在离职前给公司服务器来了一记rm-rf/*,真实演绎了什么叫"删库跑路",老板把恢复数据的希望寄托在刚刚入职的你身上。你能帮助公司恢复出硬盘里的重要数据......
  • 女生适合学网络安全吗,学完就业怎么样?
    近年来,随着互联网技术的快速发展,网络安全问题受到了各大企业的关注与重视,而作为当下热门的技术,很多人都萌生了学习网络安全的想法,因此不少人会问:网络安全适合女生学习吗......
  • nginx网络安全配置
    1.隐藏nginx版本信息在nginx.conf中配置http{...#隐藏版本信息server_tokensoff;...}可以看到已经没有nginx信息了隐藏nginx版本2.隐藏powe......
  • 攻防世界 XSCTF 联合招新赛 凯撒大帝在培根里藏了什么
    究极简单题(认真格式为flag{你所得到的大写字符串}得到一串字符串ABBABAABBAAAAABABABAABABBAAAAABAABBAAABAABBBABBAABABBABABAAABABBBAABAABABABBBAABBABAA先用培......