PWN

Posted ying-hack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PWN相关的知识,希望对你有一定的参考价值。

二进制基础

  • 程序的编译与链接
  • Linux下的可执行文件格式ELF
  • 进程虚拟地址空间
  • 程序的装载与进程的执行
  • x86amd64汇编简述

程序的编译与链接

从C源代码到可执行文件的生成过程
C语言代码 -> 汇编代码 -> 机器码 -> 可执行文件

  • 编译
    • 由C语言代码生成汇编代码
    • gcc -S 文件名
  • 汇编
    • 由汇编代码生成机器码
    • gcc 文件名
  • 链接
    • 将多个机器码的目标文件链接成一个可执行文件
    • gcc 文件名

在Linux下一步从C编译到机器码gcc 文件名

反汇编从汇编到C语言是可以做到的,但是从汇编代码到高级语言是不现实的。汇编代码和机器代码是一一对应的关系。
目前反汇编的话IDA做的是比较好的。

Linux下的可执行文件格式ELF

  • 什么是可执行文件
    • 广义:文件中的数据是可执行代码的文件,.out,.exe,.sh,.py等
    • 狭义:文件中的数据是机器码的文件.out,.exe,.dll,.so

可执行文件的分类

  • Windows:PE(Portable Executable)
    • 可执行程序
      • .exe
    • 动态链接库
      • .dll
    • 静态链接库
      • .lib
  • Linux:ELF(Executable and Linkable Format)
    • 可执行文件
      • .out
    • 静态链接库
      • .so
    • 动态链接库
      • .a

附上大佬的图
在这里插入图片描述

  • ELF文件
    • ELF文件头表
      -记录了ELF文件的组成结构
    • 程序头表/段表
      • 告诉系统如何创建进程
      • 生成程序的可执行文件必须拥有此结构
      • 重定位文件不一定需要
    • 节头表
      • 记录了ELF的节的节区信息
      • 用于链接的目标文件必须拥有此结构
      • 其他类型目标文件不一定需要

在这里插入图片描述
在磁盘中的文件断电之后会被存储,但是在内存中的文件断电之后就会消失
在这里插入图片描述
一个ELF文件不足以支撑程序的执行,还需要其他的一些东西来执行文件。

进程虚拟地址空间

每个进程都有4g的虚拟空间
但是实际上的空间要比4g小的多
在执行的时候虚拟地址会转化为实际地址

地址以字节编码
1 Byte = 8bits
常以16进制表示
0x3c = 0011 1100

虚拟内存用户空间每个进程一份
虚拟内存内核空间所有进程共享一份
虚拟内存mmap段中的动态链接库仅在物理内存中装载一份

以上是关于PWN的主要内容,如果未能解决你的问题,请参考以下文章

[NTUSTISC pwn LAB 6]rop&Return to plt实验

逆向及Bof基础实践

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础