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的项,使用这个偏移成功爆破。

原文地址:https://www.cnblogs.com/jourluohua/p/8996243.html