Skip to content

rycbar77/LibcSearcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Search libc function offset

简介

修改自lieanu/LibcSearcher ,主要添加了在线查询接口

这是针对 CTF 比赛所做的小工具,在泄露了 Libc 中的某一个函数地址后,常常为不知道对方所使用的操作系统及 libc 的版本而苦恼,常规方法就是挨个把常见的 Libc.so 从系统里拿出来,与泄露的地址对比一下最后 12 位。

为了不在这一块浪费太多生命,写了几行代码,方便以后重用。

这里用了 libc-database 的数据库。

进度

  • 更新 libc-database
  • 在线查询接口

安装

# clone this repo
git clone --recursive https://github.com/rycbar77/LibcSearcher.git
cd LibcSearcher
python setup.py develop
# download libc file
cd libc-database
# see README for libc-database
./get

示例

from LibcSearcher import *

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

# 使用libc-database在线api查询
obj = LibcSearcher("fgets", 0X7ff39014bd90, online=True)

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

如果遇到返回多个 libc 版本库的情况,可以通过add_condition(leaked_func, leaked_address)来添加限制条件,也可以手工选择其中一个 libc 版本(如果你确定的话)。

其它

与原版的用法不变,兼容原先的脚本

默认使用本地查询,因为本地查询效率更高,且线下理论上会断网

在线查询会受到网络的影响,速度较慢且不稳定

欢迎提issue

About

根据函数地址查询libc,可本地或在线查询

Resources

Stars

Watchers

Forks

Languages