zoukankan      html  css  js  c++  java
  • elf 学习

    现在我们使用 readelf 命令来查看 elfDome.out 的文件头

    readelf -l elfDemo.out

    使用 readelf 来查看程序头:

    readelf -S elfDemo.o

    使用 readelf 命令查看目标文件中完整的段:

    可以使用 readelf 读取这两个表:偏移表加字符

    $ readelf -x .strtab elfDemo.o
    readelf -s elfDemo.o

    符号表

    readelf -r elfDemo.o

    重定位表

    LD_PRELOAD 环境变量可以定义在程序运行前优先加载的动态链接库。这使得我们可以有选择性地加载不同动态链接库中的相同函数,即通过设置该变量,在主程序和其动态链接库中间加载别的动态链接库,甚至覆盖原本的库。这就有可能出现劫持程序执行的安全问题。

    #include<stdio.h>;
    #include<string.h>;
    void main() 
    {      char passwd[] = "password";
           char str[128];
           scanf("%s", &amp;str);
           if (!strcmp(passwd, str)) 
            {printf("correct
    ");
             return;}
            printf("invalid
    ");
    }

    下面我们构造一个恶意的动态链接库来重载 strcmp() 函数,编译为动态链接库,并设置 LD_PRELOAD 环境变量:

    $ cat hack.c
    #include<stdio.h>
    #include<stdio.h>
    int strcmp(const char *s1, const char *s2) 
     {printf("hacked
    ");
     return 0;}
    $ gcc -shared -o hack.so hack.c
    $ gcc ldpreload.c
    $ ./a.out
    asdf
    invalid
    $ LD_PRELOAD="./hack.so" ./a.out
    asdf
    hacked
    correct

    LD_SHOW_AUXV

    AUXV 是内核在执行 ELF 文件时传递给用户空间的信息,设置该环境变量可以显示这些信息。如:

    $ LD_SHOW_AUXV=1 ls
    AT_SYSINFO_EHDR: 0x7fff41fbc000
    AT_HWCAP:        bfebfbff
    AT_PAGESZ:       4096
    AT_CLKTCK:       100
    AT_PHDR:         0x55f1f623e040
    AT_PHENT:        56
    AT_PHNUM:        9
    AT_BASE:         0x7f277e1ec000
    AT_FLAGS:        0x0
    AT_ENTRY:        0x55f1f6243060
    AT_UID:          1000
    AT_EUID:         1000
    AT_GID:          1000
    AT_EGID:         1000
    AT_SECURE:       0
    AT_RANDOM:       0x7fff41effbb9
    AT_EXECFN:       /usr/bin/ls
    AT_PLATFORM:     x86_64

    以上文章转载自https://firmianay.gitbooks.io/ctf-all-in-one/content/doc/1.5.7_memory.html,如果影响作者,望联系本人进行删除

  • 相关阅读:
    九.GPIO中断试验3——GPIO中断驱动
    十.定时器EPIT——1EPIT的入门
    九.GPIO中断试验1——中断原理
    九.GPIO中断试验2——通用中断服务程序构成
    Django学习笔记〇六——项目2,图书管理系统
    博客项目——〇六 添加新文章——富文本编辑器、beautifulsoup的使用
    1月7日
    1月9日
    1月8日
    Scala泛型和上下界
  • 原文地址:https://www.cnblogs.com/kk328/p/9333737.html
Copyright © 2011-2022 走看看