ELF文件的概述

发布于 2023-02-20  367 次阅读


要说ELF文件就不得不先说说别的东西,请仔细阅读。

前序:

exploit简称exp :用于攻击的脚本代码或方案。

payload :攻击载荷,目标进程被劫持的控制流的数据;通俗的讲就是发起攻击时构造的恶意数据发送给目标程序,经过目标程序处理之后触发其漏洞,进而达到预期目的,构造的恶 意数据就称为payload。

shellcode:调用攻击目标的shell代码;(构造的恶意数据含有一段机器码, 其作用就是从攻击对象中获取shell,这段包含在payload中的机器码就称为shellcode。

pwn的攻击流程

通过ip端口访问到目标服务器,与服务器建立连接之后,利用手里的exp(攻击脚本)生成的攻击载荷,向远程端口输送这段恶意二进制数据 ,触发漏洞,pwn掉目标服务器,进而得到想要的信息。

左边小方框为自己的电脑,右边为目标服务器,payload由本机中的exp生成,通过链接打到目标服务器中被程序利用,精心构造的payload会触发目标服务器中相对应的漏洞,调取shell进而得到目标服务器的控制权;然而漏洞是怎么发现的,是由题目提供的一份二进制文件,分析文件代码找到漏洞,完成一次攻击。

目前, 软件世界百分之40的漏洞是由c语言或c++所写成的,很多具有利用价值的漏洞也存在于一些操作系统中,包括linux,windows等操作系统,apache等服务器也会存在一些原理简单的漏洞,然而c语言写的源代码是如何生成可执行文件的呢,由源代码编译生成的二进制文件即为可执行文件,即为ELF文件,ELF文件是linux下的可执行文件的格式,如下图。

什么是可执行文件呢?

动、静态链接库提供代码的具体的代码实现。

ELF文件存放于磁盘中, 到了内存中会创建一个虚拟内存映像,成为一个进程。

ELF文件的核心结构如下图

ELF header记录了整个ELF文件在程序中的结构分布

Sections’names 记录了各个节的节名,真正起作用的还是code、data这俩个大的节。code节里边包含的是机器码的分区,不同分区有不同的功能 ,根据不同的功能划分成不同的代码节。data节 也包含了许多节,如dynamic节,各个节作用权限相同。

Section header table 记录了 程序中各个节的信息。

不同的节可能分属一个段,因为这些节虽然功能不同,但是执行或者读取、写入的作用是相同的;段是用来规定读写执行权限的,并且是在ELF文件加载到内存成为进程之后起作用的。

至此完结。


穿过云层我试着努力向你奔跑