• Linux Exploit系列之七 绕过 ASLR -- 第二部分


    原文地址:https://github.com/wizardforcel/sploitfun-linux-x86-exp-tut-zh/blob/master/7.md

    这一节是简单暴力的一节,作者讲的很清楚,有些坑我在之前的说明中也已经说过了。这次说一个坑,我调了很久,不一定每个人都会遇到。

    TypeError: execv() arg 2 must contain only strings的问题

    这个是问题真的很坑啊,就是地址计算会产生一个call不识别的字符(看起来是这样,具体没有细究)

    在前几节中,遇到这个问题,建议换个语言,比如爆破使用C而不是Python,想绕真的不容易

    我试过了str(buf)和“%s” % buf两种办法,并不好使,解决的办法是,换一个不容易踩到坑的地址,反正Exploit有技巧的成分,也有运气的成分

    比如我的exit的偏移地址是0x33400,和上边的libc地址加和后,总是报错,因此,使用

    jourluohua@jourluohua-virtual-machine:~/work/test7$ readelf -s /lib/i386-linux-gnu/libc-2.19.so | grep exit
       111: 00033830    58 FUNC    GLOBAL DEFAULT   12 __cxa_at_quick_exit@@GLIBC_2.10
       139: 00033400    45 FUNC    GLOBAL DEFAULT   12 exit@@GLIBC_2.0
       446: 00033870   268 FUNC    GLOBAL DEFAULT   12 __cxa_thread_atexit_impl@@GLIBC_2.18
       554: 000b6704    24 FUNC    GLOBAL DEFAULT   12 _exit@@GLIBC_2.0
       609: 0011cc40    56 FUNC    GLOBAL DEFAULT   12 svc_exit@@GLIBC_2.0
       645: 00033800    45 FUNC    GLOBAL DEFAULT   12 quick_exit@@GLIBC_2.10
       868: 00033630    84 FUNC    GLOBAL DEFAULT   12 __cxa_atexit@@GLIBC_2.1.3
      1037: 00127490    60 FUNC    GLOBAL DEFAULT   12 atexit@GLIBC_2.0
      1380: 001ab204     4 OBJECT  GLOBAL DEFAULT   31 argp_err_exit_status@@GLIBC_2.1
      1491: 000f9950    62 FUNC    GLOBAL DEFAULT   12 pthread_exit@@GLIBC_2.0
      2087: 001ab154     4 OBJECT  GLOBAL DEFAULT   31 obstack_exit_failure@@GLIBC_2.0
      2240: 00033430    77 FUNC    WEAK   DEFAULT   12 on_exit@@GLIBC_2.0
      2383: 000fa4c0     2 FUNC    GLOBAL DEFAULT   12 __cyg_profile_func_exit@@GLIBC_2.2
    

     最有可能的offset是0x33400,但是这不是不好使么,发现存在一个_exit@@GLIBC_2.0的项,使用这个偏移成功爆破。

  • 相关阅读:
    排查oom方法
    逃逸分析-栈上分配
    java堆是分配对象的唯一选择吗
    GC
    jvm为什么把-Xms和-Xmx的值设置成一样
    java堆
    java为何使用native 方法
    linux top命令信息详解
    java定位系统性能问题
    struts 初体验
  • 原文地址:https://www.cnblogs.com/jourluohua/p/8996243.html
Copyright © 2020-2023  润新知