LibcSearcher的安装使用

LibcSearcher是针对pwn做的python库,在做pwn题时寻找libc版本非常好用,使用方式也非常简单:

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

可以安装也可以直接将LibcSearcher.py拿到同一目录下直接使用,安装方式

git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
python setup.py develop

可能遇到的问题:

LibcSearcher是基于libc-database做的脚本,由于下载的LibcSearcher可能由于某些原因Libc库并不完全,如果出现

Multi Results:
0: ...
1: ...
Please supply more info using  add_condition(leaked_func, leaked_address).
You can choose it by hand
Or type 'exit' to quit:

但是无论选哪个都有问题时要么是payload不对(例如栈未对齐)要么就是Libc库的问题。

解决办法:

  1. 进入LibcSearcher/libc-database中运行./get文件即可进行更新。

  2. 1提到的./get无法更新时,可以到github下载lib-database源代码,git太慢可以直接浏览器下载后解压到LibcSearcher中并重命名。

cd LibcSearcher
rm -rf libc-database
git clone https://github.com/niklasb/libc-database.git

然后用./get进行libc库更新

    3.加速下载,由于./get使用wget,单线程的速度,加上某些原因,下载速度十分之慢,可以将下载工具换成多线程工具。

    以mwget为例,先安装mwget,mwget是c语言开发的多线程下载工具

安装:

wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2
tar -xjvf mwget_0.1.0.orig.tar.bz2
cd mwget_0.1.0.orig
./configure
#报错intltool
#apt install inttool
#报错openssl
#apt install libssl-dev
#报错语法错误strlen之类的
#在mwget_0.1.0.orig/src/utils.h中添加#include
make & make install

替换:修改LibcSearcher/libc-database/common/libc.sh中下载文件部分(get_ubuntu函数)为以下内容

get_ubuntu() {
  local url="$1"
  local info="$2"
  mkdir temp
  #$tmp的方式mwget会出问题,直接改成temp更方便
  echo "Getting $info"
  echo "  -> Location: $url"
  local id=`echo $url | perl -n -e '/(libc6[^\/]*)\./ && print $1'`
  echo "  -> ID: $id"
  check_id $id || return
  echo "  -> Downloading package"
  mwget -n 50 -t 5 "$url" 2>/dev/null -d temp/ -f pkg.deb || die "Failed to download package from $url"
  #设置mwget50线程下载
  echo "  -> Extracting package"
  pushd temp 1>/dev/null
  ar x pkg.deb || die "ar failed"
  tar xf data.tar.* || die "tar failed"
  popd 1>/dev/null
  suffix=
  cnt=1
  for libc in $(find temp/ -name libc.so.6 || die "Cannot locate libc.so.6"); do
    process_libc $libc $id$suffix $info $url
    cnt=$((cnt+1))
    suffix=_$cnt
  done
  rm -rf temp/
}

其中mwget行可以换成自己的多线程工具,保证下载文件为temp/pkg.deb即可

你可能感兴趣的:(python,php,github,linux,centos)