• [PWN]新手入门第一篇章介绍


    最近闲的蛋疼,在做了PWN各种题型后,准备总结一下知识点,方便后续朋友及小白查询,大家一起努力吧......

    PWN

    pwn 介绍

    1、pwn: 破解,利用成功(程序的二进制漏洞)
    2、攻破(设备,服务器)
    3、控制(设备,服务器)
    linux下的可执行文件是ELF
    exploit用于攻击脚本的脚本与方案
    攻击载荷,是目标进程被劫持控制流的数据
    shellcode调用攻击目标的shell脚本

    一切的编译型语言都可以生成二进制文件

    在vim中查看一个文件的二进制格式是在末行模式输入:%!xxd

    此时你看到的二进制的值都是在ascii范围内的,因为它是文本文件

    ,文本文件的所有值都是ascii码值

    通过gcc编译c程序文件中间经历了很多过程,但做PWN的时候我们只关心中间的两个步骤:

    c程序源代码---------->汇编程序代码文件----------->目标文件(链接文件)--------------->可执行程序文件(目标文件链接成可执行文件)

    gcc -S test.c # 会把C语言文件编译成汇编代码文件test.s

    gcc test.s #就是通过gcc把这个汇编文件再编译成二进制执行文件 a.out

    当我们通过vim来查看a.out的二进制执行文件的内容的时候,会出现大量的乱码,只有少数的字符才会正常显示,这是因为在计算机底层编码中,只有特定范围的值是可以表现为字符的

    人能看懂的代码----------------编译器、解释器--------------------机器能看懂的代码(由0、1组成)

    动态链接库的文件通过libc进行链接,静态链接库的文件直接写在了文件的本身

    有一种说法叫做C语言代码是转换一种格式写的汇编代码

    计算机的鼻祖----图灵机,即打印纸带的机器,目前大家用的都是冯诺依曼机

    可执行文件的分类:

    1、windows:PE(Portable Executable)

    可执行程序:.exe

    动态链接库: .dll

    静态链接库:.lib

    2、linux:ELF(Executable and Linkable Format)

    可执行程序:.out

    动态链接库:.so

    静态链接库:.a

    一个ELF文件的主体部分是机器码,当然它并不仅仅只有机器码,它还有各种数据部分来标识这个文件的相关信息

    3、ELF文件结构:

    header -----------ELF header:表示ELF的文件头(ELF文件头表)

    Program Header table:程序头(段表):进程映向不同部分权限的

    sections -----------Code:给CPU认得机器码,代码段只读不可写

    Data:就是计算机运行中用到的一些相关数据,数据段可写

    Sections'names

    header ------------Section Header table:节头表,是用来组织节的内容的,是用来组织ELF文件存储在磁盘上,各个节的 信息,节试图是给ELF用的,段视图是给进程的进程映向用的,就是记录各种节的分类信息

    除了ELF header必须放在ELF的开头部分,其余的可随意放置

    这三个表放置的都是控制信息,控制信息放置了一些可见字符与不可见字符

    ELF文件在硬盘上和在内存中结构是相似的,但是是有区别的,磁盘是一个大容量低速存储器,内存是一个小容量高速存储器

    最接近CPU的存储器是寄存器,下来就是cache(高速缓冲存储器),cache是一个高端CPU或者是低端CPU的直接体现,cache是CPU里自带的存储器

    高端的CPU会配备多级cache

    内存是用电频信号保存数据的,所以一断电,数据就会丢失

    程序代码加载到内存中并不是仅仅只是程序的本体就够了,还会有各种各样的控制结构,程序stack(栈)用来管理函数的调用状态,heap用来给用户提供动态内存申请的调用,所以ELF文件是不足以支撑程序的运行的

    objdump -s elf 用来查看elf文件在磁盘里的程序结构

    cat /proc/pid/maps 在内存中的进程结构,但这个程序必须是正在执行没有停止的程序进程,如果想看可以去这个文件夹找系统维护的守护进程来看,还有一个方法是查看这个进程的内存空间信息gdb simple.elf

     

     

  • 相关阅读:
    可视化理解卷积神经网络
    方差 标准差区别
    SSIS中出现数据流数据源假死状态的解决办法
    IIS中ASP.NET虚拟目录不继承主站点web.config设置的办法(转载)
    SSAS 度量值中的distinct count局聚合方式会数为null的值
    SSAS中CUBE的多对多关系既可以出现在中间事实表上也可以出现在中间维度表上
    SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份
    获取当前正在执行的Javascript脚本文件的路径
    C#中try catch中throw ex和throw方式抛出异常有何不同
    SqlServer 一个查询语句导致tempdb增大55G(转载)
  • 原文地址:https://www.cnblogs.com/m-r-lee/p/13674960.html
Copyright © 2020-2023  润新知