博客
关于我
攻防世界-pwn1-Writeup
阅读量:566 次
发布时间:2019-03-09

本文共 1386 字,大约阅读时间需要 4 分钟。

如何利用栈溢出绕过canary保护机制

在安全研究中,asbrute force攻击和各种防护机制打臂 REQUIRED firm的实战经验无疑是宝贵的。在本例中,我们将探讨如何利用栈溢出漏洞绕过保护机制canary,进而控制程序执行。

背景与问题分析

程序的设计目标是实现对栈数据的读写操作,但其存在栈溢出漏洞。为了应对这一安全威胁,开发者采用了canary保护机制。这一机制通过在栈中预留一个小区域(canary),检测任何试图覆盖该区域的行为,从而防止栈溢出攻击。然而,正如每一项安全措施都可能被攻破一样,这一机制也有其漏洞。

栈溢出与canary绕过

程序中栈溢出的溢出空间相当大,而canary保护仅为特定的大小,通常是最后的字节。这意味着攻击者可以精确地覆盖一个canary的最后一字节,从而绕过保护机制。在这个过程中,攻击者通常会先确定canary的值,以便为后续步骤做准备。

通过分析程序,我们发现了一个在菜单中选择的操作,该操作允许攻击者读取大量栈数据。具体来说,在case1中,程序通过read函数读取了大量的数据,导致栈溢出。这一操作被用来作为绕过机制的突破口。

利用ROP链获取控制

一旦绕过了canary保护,下一步是控制程序执行。为了实现这一点,攻击者需要利用返回操作指令(ROP,Return-Oriented Programming),将程序控制回到已知安全区域,例如 main 函数。通过构造ROP链,可以实现这个控制过程。

接下来,攻击者需要读取libc中的函数地址,通常是通过Already Known是一些gadgets,比如 onegadget。这些gadgets通常可以通过利用栈上的函数调用来触发,从而获得更高的权限。

###Exploiting the栈溢出漏洞

在Python脚本中,利用PwN库,可以构造一个rop链来执行相关操作。我将构造一个包含canary地址的链,使得程序跳转到已知的 Address,我们可以用这 链来达到我们的目的,然后发送这个链作为回复。

攻击策略

为了实现攻击,我们首先构造一个可以读取栈溢出区域的payload,读取canary值。然后,构造rop链,通过jump到ROP gadgets,触发onegadget,从而获得control。

在实验中,我们通过:

payload = b'a'*0x88 + p64(canary) + p64(0xdeadbeef) + p64(pop_rdi) + p64(puts_got) + p64(puts_plt) + p64(start_addr) + p64(onegadget)

构造一个链,将程序控制到ROP环节,进而触发漏洞。

总结

利用栈溢出漏洞绕过canary保护,以及构造ROP链控制程序执行,是当今的常见漏洞利用方式。相对于直接的buffer overflow,这种方法更为灵活,允许攻击者做出更精确的控制。尽管开发者设有各种保护机制,攻击者回应的挑战始终在于如何突破这些防护,不被检测,并获得最终的finged control.

在实际应用中,值得注意的是,漏洞的类型和防护措施随购买发行型会发生变化。因此,持续学习和实践对应对这些问题至关重要。

通过以上步骤,可以成功绕过canary保护机制,控制程序执行,实现漏洞利用。

转载地址:http://smppz.baihongyu.com/

你可能感兴趣的文章
python 常量_零基础学Python系列之一:Python的变量与常量
查看>>
Python 并发编程
查看>>
Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
查看>>
python 序列化操作
查看>>
Python 开发者,这 7 个 VS Code 插件极力推荐
查看>>
python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
查看>>
python 录音左右声道_Python分离立体声wav压缩文件的左右声道
查看>>
Python 循环异或对文件进行加解密
查看>>
Python开发环境搭建(附VMware安装包及虚拟机环境)
查看>>
python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
查看>>
Python 快速下载依赖
查看>>
python实现非参数统计的Cochran检验 (附完整源码)
查看>>
python 怎么验证是否安装成功 scrapy
查看>>
Python 手写数字识别-1
查看>>
Python实现接口自动化测试库(JSON与Requests)详解
查看>>
Python 手写数字识别-3-sklearn中的几种算法
查看>>
python实现SSIM和MSSSIM计算 (附完整源码)
查看>>
Python 打开文件注意事项
查看>>
python 批量修改文件名_python windows下批量修改文件名
查看>>
Python 抓取网页乱码问题 以及EXCEL乱码
查看>>