ELF(Executable Linkable Format)文件为Linux下的可执行文件,对标Windows下的PE文件(而非exe,具体可自行查阅资料了解),我们做pwn的题目需要了解其中的ELF头,Section(节),Segment(段)即可。

ELF文件头主要包含了程序运行的计算机框架,程序入口等信息。在Linux终端我们可以使用"readelf -h"读取相应的内容。

ELF文件由多个节(有时也称段)构成,其中存放着各种数据,不同的数据在不同的区域,而且赋予使用者的权限也不相同。

●.text节:代码段,存放着程序运行所需的所有代码,这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读 ,在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

●.data节:数据段,通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配,所以有初值的全局变量和static变量在data区,可读可写

●.rdata节:只读数据段,是用来存放只读实始化变量的,当我们在源程序中的变量前面加了const后,编译器知道个字符串是永远不会改变的,或说是只读的,所以将其分配到.rdata段中,在内存区域通常属于只读。

      ●.bss段:用于存放程序的可修改数据,与.data不同的是这些数据没有被初始化(或者初始值为0),这些数据没有被初始化,所以没有占用ELF文件空间,当程序开始执行后,系统才会申请一块空内存给bss段。

●.plt和.got段:这两段共同承担着调用程序动态链接库中函数调用的责任,程序想要调用动态链接库中的外部函数时必须要要现在两个表中找到函数的真实地址之后才能实现跳转和调用,这个在后面的学习中会深入讲解。

使用"readelf -S "可查看每个段的详细信息。

出于安全,程序中一般不会存在既可写又可执行的段,因为这样不法分子很容易就能控制程序。

Pwn入门之ELF文件相关推荐

  1. c# 定位内存快速增长_CTF丨Linux Pwn入门教程:针对函数重定位流程的相关测试(下)...

    Linux Pwn入门教程系列分享已到尾声,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...

  2. PWN入门系列教程~(1)

    PWN入门系列教程~(1) 先来说下学习路线 大致分为以下几个部分 那么什么是PWN呢? 栈 函数调用栈 寄存器 函数调用栈的经典内存布局 先来说下学习路线 大致分为以下几个部分 学习基础:去学习一些 ...

  3. Linux pwn入门教程——CTF比赛

    Linux pwn入门教程(1)--栈溢出基础 from:https://zhuanlan.zhihu.com/p/38985585 0x00 函数的进入与返回 要想理解栈溢出,首先必须理解在汇编层面 ...

  4. pwn入门-PLT表与GOT表、libc入门

    动态链接时,一个程序PLT表中的内容始终不变,仅在程序加载时修改GOT表中的内容.PLT表中的每个表项指向对应函数在GOT表中的地址(偏移),每次加载程序都相同.程序加载后GOT表中的每个表项保存的是 ...

  5. 乱七八糟的pwn入门(六)——5.passcode

    审题 首先看题目: 连上服务器,看一下这次的代码: #include <stdio.h> #include <stdlib.h>void login(){int passcod ...

  6. pwn入门系列-ret2libc2

    Ret2libc2 今天来做一下经典的retlibc系列的第二题 资源:ret2libc2 老样子先checksec [*] '/home/giantbranch/Desktop/pwn/ret2li ...

  7. Linux pwn入门教程——格式化字符串漏洞

    本文作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42943-1-1.html 0×00 printf函数中的漏洞printf函 ...

  8. 全网最硬核PWN入门_图解分析

    PWN 序 Linux环境下的基础知识 从C源码到可执行文件的生成过程 程序的编译与链接 什么是可执行文件 可执行文件分类PE/ELF ELF文件格式 区分节和段的存储区域 加载ELF / 查看节和段 ...

  9. linux elf 文件理解与分析

    https://linux-audit.com/elf-binaries-on-linux-understanding-and-analysis/ 我们理所当然的使用一些工具.其中一部分就是 linu ...

  10. readelf和ldd分析elf文件

    1. elf 文件格式 linux系统中,gcc编译器编译出的object文件.可执行文件都属于elf文件. elf文件由三个部分组成:elf header.program headers|secti ...

最新文章

  1. 几个常见的网络故障分析
  2. 【概念】虚拟利润中心初识
  3. OpenGL ES之GLKit索引绘制“金字塔”及渲染纹理和颜色混合
  4. Flume原理及使用案例
  5. 清华大学上海交大,复制粘贴般的优秀!
  6. Oracle学习总结(2)——Oracle数据库设计总结(三大范式)
  7. 大数据分析平台由哪些部分构成
  8. Gephi教程———数据输入
  9. pr人像磨皮美容插件:Beauty Box for Premiere Pro
  10. 代码比对方法/代码比对工具
  11. yoloV3运行速度测试报告
  12. 吊打全球的顶级毫米波数字阵列项目-MIDAS
  13. 美术文献杂志美术文献杂志社美术文献编辑部2022年第7期目录
  14. RGB,ARGB颜色值的表示表示
  15. 如何在Apache-Maven官网下载到自己想要的版本
  16. xargs 重定向输出 示列分析
  17. 如何在文字识别软件ABBYY中创建区域模板,处理大量相同内容?
  18. ip route 命令的作用详解
  19. SpringBoot之——动态数据源(多数据源自动切换)
  20. 【开源WebGIS】07-Openlayers+Vue 测量功能-02

热门文章

  1. HDFView打开.h5文件时报错Failed to open file
  2. object-c的静态变量(static)
  3. matlab函数作图格式,Matlab绘制函数图像函数示例汇总
  4. Servlet原理解析
  5. 2021年长安杯电子数据取证比赛复盘完整版(wp)
  6. Skyline软件系列平台
  7. fm核武破解 java出错_java.lang.UnsupportedClassVersionError 错误的原因
  8. 软件经济工程学重点大纲
  9. html下播放.wav,wav格式文件用什么播放
  10. 最新的windows xp sp3序列号 xp序列号