
libc-database には Web サービスとフロントエンドが用意されました。https://libc.rip/ で試してみてください!API に興味がある方は https://github.com/niklasb/libc-database/tree/master/searchengine をお読みください。
エラーが発生した場合は、以下の「要件」セクションを確認してください。
必要な libc カテゴリを取得し、シンボルオフセットを抽出します。 既にダウンロード済みのものは再度ダウンロードしないため、データベースの更新にも使用できます。
$ ./get # カテゴリ一覧を表示
$ ./get ubuntu debian # Ubuntu と Debian の libc をダウンロード(以前のデフォルト動作)
$ ./get all # すべてのカテゴリをダウンロード。時間がかかる場合があります。
カスタム libc をデータベースに追加することもできます。
$ ./add /usr/lib/libc-2.21.so
指定された名前とアドレスを持つすべての libc をデータベースから検索します。 ランダム化は通常ページサイズ単位で行われるため、下位 12 ビットのみがチェックされます。
$ ./find printf 260 puts f30
archive-glibc (libc6_2.19-10ubuntu2_i386)
__libc_start_main へのリークされた戻りアドレスから libc を検索します。
$ ./find __libc_start_main_ret a83
ubuntu-trusty-i386-libc6 (libc6_2.19-0ubuntu6.6_i386)
archive-eglibc (libc6_2.19-0ubuntu6_i386)
ubuntu-utopic-i386-libc6 (libc6_2.19-10ubuntu2.3_i386)
archive-glibc (libc6_2.19-10ubuntu2_i386)
archive-glibc (libc6_2.19-15ubuntu2_i386)
libc ID を指定して、いくつかの有用なオフセットをダンプします。独自の名前を指定してダンプすることもできます。
$ ./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
ライブラリがすでにデータベースに存在するか確認します。
$ ./identify /usr/lib/libc.so.6
local-f706181f06104ef6c7008c066290ea47aa4a82c5
または、ハッシュを使用して libc を見つけます(現在は BuildID、MD5、SHA1、SHA256 が実装されています):
$ ./identify bid=ebeabf5f7039f53748e996fc976b4da2d486a626
libc6_2.17-93ubuntu4_i386
$ ./identify md5=af7c40da33c685d67cdb166bd6ab7ac0
libc6_2.17-93ubuntu4_i386
$ ./identify sha1=9054f5cb7969056b6816b1e2572f2506370940c4
libc6_2.17-93ubuntu4_i386
$ ./identify sha256=8dc102c06c50512d1e5142ce93a6faf4ec8b6f5d9e33d2e1b45311aef683d9b2
libc6_2.17-93ubuntu4_i386
libc ID に対応する libs 全体をダウンロードします。
$ ./download libc6_2.23-0ubuntu10_amd64
Getting libc6_2.23-0ubuntu10_amd64
-> Location: http://security.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu10_amd64.deb
-> Downloading package
-> Extracting package
-> Package saved to libs/libc6_2.23-0ubuntu10_amd64
$ ls libs/libc6_2.23-0ubuntu10_amd64
ld-2.23.so ... libc.so.6 ... libpthread.so.0 ...
これらのスクリプトを実行するには、PATH に以下のコマンドが必要です:
RPM ベースの要件に加えて、以下が必要です:
Debian ベースの要件に加えて、以下が必要です:
Debian 10 ですべてをインストールするには、以下のコマンドを実行します:
apt-get update
apt-get install -y \
binutils file \
wget \
rpm2cpio cpio \
zstd jq