博客
关于我
攻防世界-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/

你可能感兴趣的文章
【Docker知识】将环境变量传递到容器
查看>>
uniapp超全user-agent判断 包括微信开发工具 hbuilder mac windows 安卓ios端及本地识别
查看>>
Oracle DBA课程系列笔记(20)
查看>>
oracle dblink 创建使用 垮库转移数据
查看>>
oracle dblink结合同义词的用法 PLS-00352:无法访问另一数据库
查看>>
Oracle dbms_job.submit参数错误导致问题(ora-12011 无法执行1作业)
查看>>
oracle dg switchover,DG Switchover fails
查看>>
Oracle E-Business Suite软件 任意文件上传漏洞(CVE-2022-21587)
查看>>
Oracle EBS OPM 发放生产批
查看>>
Oracle EBS-SQL (BOM-15):检查多层BOM(含common BOM).sql
查看>>
Oracle EBS环境下查找数据源(OAF篇)
查看>>
oracle Extract 函数
查看>>
uni-app开发环境自动部署的一个误区(App running at...)
查看>>
Oracle GoldenGate Director安装和配置(无图)
查看>>
Oracle Goldengate在HP平台裸设备文件系统OGG-01028处理
查看>>
oracle instr函数详解
查看>>
Oracle Java所有版本的下载链接
查看>>
Oracle JDBC url的几种方式
查看>>
Oracle JDK vs OpenJDK
查看>>
ORACLE MERGE INTO (2)
查看>>