LibcSearcher3
(Search libc function offset)
简介
这是针对CTF比赛所做的工具,需要Python版本大于等于 3.7
在泄露了Libc中的某一个函数地址后,常常为不知道对方所使用的操作系统及libc的版本而苦恼,常规方法就是挨个把常见的Libc.so从系统里拿出来,与泄露的地址对比一下最后12位。
为了不在这一块浪费太多生命,写了几行代码,方便以后重用。
这里用了libc-database的数据库。
使用前需要先进行初始化。
安装
$ git clone https://github.com/Ro0tk1t/LibcSearcher3.git
$ pip3 install -e LibcSearcher3
or
$ pip3 install LibcSearcher3
初始化
$ libcsearch --init
使用
实例化
from LibcSearcher3 import *
#第二个参数,为已泄露的实际地址,或最后12位(比如:d90),int类型
obj = LibcSearcher("fgets", 0x7ff39014bd90)
obj = LibcSearcher("fgets", 0x7ff39014bd90) # 使用一个已知符号地址作为初始约束,初始化 LibcSearcher
obj.add_condition("atoi", 218528) # 添加一个约束条件
print("[+]/bin/sh offset: ", hex(obj.dump("str_bin_sh"))) # 根据已有约束条件,查询某个符号在 Libc 中的地址
print("[+]system offset: ", hex(obj.dump("system")))
命令行
$ libcsearch --help
usage: libcsearch [-h] [-i] [-f FUNC] [-d ADDR] [-t TO_LEAK]
optional arguments:
-h, --help show this help message and exit
-i, --init 初始化libc库
-l LOCAL_LIBC, --local LOCAL_LIBC
添加本地libc信息
-f FUNC, --func FUNC 已泄露的函数名
-d ADDR, --addr ADDR 已泄露函数的实际地址
-t TO_LEAK, --to_leak TO_LEAK
需要泄露的函数偏移
$ libcsearch -f fgets -d 0x7ff39014bd90 -t system
Multi Results:
0: kali-glibc (id libc6-x32_2.31-3_amd64)
1: ubuntu-old-eglibc (id libc6-amd64_2.13-0ubuntu13.2_i386)
2: kali-glibc (id libc6-x32_2.31-3_i386)
3: ubuntu-old-glibc (id libc6_2.19-10ubuntu2_amd64)
4: archive-glibc (id libc6-amd64_2.23-0ubuntu10_i386)
Please supply more info using
add_condition(leaked_func, leaked_address).
You can choose it by hand
Or type 'exit' to quit: 0
[+] kali-glibc (id libc6-x32_2.31-3_amd64) be choosed.
[+] system offset: 0x40130
添加本地libc库信息
$ libcsearch -l /usr/lib32/libc-2.31.so
Adding local libc /usr/lib32/libc-2.31.so (id local-189747720230b84e629b7fb77ecb4006416e3ada /usr/lib32/libc-2.31.so)
-> Writing symbols to ../db/local-189747720230b84e629b7fb77ecb4006416e3ada.symbols
-> Writing version info
如果遇到返回多个libc版本库的情况,可以通过add_condition(leaked_func, leaked_address)来添加限制条件,也可以手工选择其中一个libc版本(如果你确定的话)。
其它
水平一般,代码很烂,如有bug,欢迎吐槽。
欢迎贡献不同linux发行版的libc信息。
Metadata
Release files for LibcSearcher3 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| LibcSearcher3-1.4.0.tar.gz | 3.1 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| LibcSearcher3-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.3 MB
Release files / LibcSearcher3-1.4.0.tar.gz
| Download URL | LibcSearcher3-1.4.0.tar.gz |
|---|---|
| Size | 3.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1117a433d09e9a12c37d4e8fb15cd7527a30bd6ac5b7010c3df0a8c6a4314cfe
|
|
BLAKE2b-256 checksum How to use checksums |
9e2a0a918da25ba71e6107cb6eaecafbd7af83b29570f26f6e30d27ac4b14397
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.7.17
|
Release files / LibcSearcher3-1.4.0-py3-none-any.whl
| Download URL | LibcSearcher3-1.4.0-py3-none-any.whl |
|---|---|
| Size | 3.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
55b51bf5ce381ead239116afcd4678cbbdc1cfba8ac9a453bc82445a1e5a490a
|
|
BLAKE2b-256 checksum How to use checksums |
e8c2b2d72d2bfa616cf081f820abc4457551f2a33eef9690e4beb728c3effb63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.7.17
|
Security for LibcSearcher3 1.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.