本文最后更新于:星期三, 一月 2日 2019, 4:27 下午

libc_database

  • ./add 用来添加libc库
./add /usr/lib/libc-2.21.so
  • ./find 用来查找libc版本
$ ./find printf 260
archive-glibc (id libc6_2.19-10ubuntu2_i386)
  • ./dump 用来输出libc中的一些函数的偏移
$ ./dump libc6_2.19-0ubuntu6.6_i386
offset___libc_start_main_ret = 0x19a83
offset_system = 0x00040190
offset_dup2 = 0x000db590
offset_recv = 0x000ed2d0
offset_str_bin_sh = 0x160a24

LibcSearcher 一个基于libc_database写的python库
例子

from LibcSearcher import *

#第二个参数,为已泄露的实际地址,或最后12位(比如:d90),int类型
obj = LibcSearcher("fgets", 0X7ff39014bd90)

obj.dump("system")        #system 偏移
obj.dump("str_bin_sh")    #/bin/sh 偏移
obj.dump("__libc_start_main_ret")    

libc database search一个用来查询libc版本的网站

image.png

onegadget 一个神奇的工具 用来找libc中能一个gadget就get到shell的偏移

使用

one_gadget /lib/x86_64-linux-gnu/libc.so.6

image.png

info proc map 查看各个库加载信息然后寻找 “/bin/sh” 字符串
strings: 查看文件中可见字符串
strings -a -t x /lib32/libc.so.6 | grep “/bin/sh”
objdump -d file | grep “ret” 可以用来查找ret指令
objdump -x [filename] 打印头文件信息以及区段信息
objdump -T libc.so | grep gets

我知道的就这么多了


TOOL      pwn

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!