
بناء قاعدة بيانات لإزاحات libc لتبسيط عملية الاستغلال
يحتوي libc-database الآن على خدمة ويب وواجهة أمامية. زر https://libc.rip/ لتجربته! اقرأ https://github.com/niklasb/libc-database/tree/master/searchengine إذا كنت مهتمًا بواجهة API.
إذا كنت تواجه أخطاء، يرجى التحقق من قسم "المتطلبات" أدناه.
قم بجلب فئات libc المطلوبة واستخراج إزاحات الرموز. لن يقوم بتحميل أي شيء مرتين، لذا يمكنك استخدامه أيضًا لتحديث قاعدة البيانات الخاصة بك:
$ ./get # قائمة الفئات
$ ./get 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 من عنوان الإرجاع المسرب إلى __libc_start_main.
$ ./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. يمكنك أيضًا تقديم أسماء خاصة بك لتفريغها.
$ ./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
قم بتحميل كامل libs المطابقة لمعرف libc.
$ ./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-Based، ستحتاج إلى:
بالإضافة إلى متطلبات Debian-based، ستحتاج إلى:
لتثبيت كل شيء على Debian 10، قم بتشغيل هذه الأوامر:
apt-get update
apt-get install -y \
binutils file \
wget \
rpm2cpio cpio \
zstd jq