
🔍Outil d'analyse de tas pour CTF pwn.
Pwnning est un art.
HeapInspect est conçu pour rendre le heap beaucoup plus joli.
Cet outil est maintenant un plugin de nadbg. Essayez-le !
HeapShower (détaillé)PrettyPrinter (coloré, résumé)Une utilisation rapide de cet outil.




Vous pouvez également l'utiliser comme plugin gdb, très utile lorsque pwndbg ou d'autres plugins échouent à analyser le heap.
sed -i "1i source `pwd`/gdbscript.py" ~/.gdbinit # alternative, vous pouvez ajouter cette ligne manuellement
Note



Assez facile à utiliser. Je le transformerai en paquet plus tard.
from heapinspect.core import *
hi = HeapInspector(1234) #pid ici
hs = HeapShower(hi)
print(hs.fastbins)
print(hs.smallbins)
print(hs.largebins)
print(hs.unsortedbins)
print(hs.tcache_chunks)
hs.relative = 1 #mode relatif, voir Démarrage rapide
print(hs.fastbins)
sleep(10)
#maintenant, supposons que l'état du heap a changé
hs.update() #utiliser ceci pour rafraîchir
pp = PrettyPrinter(hi)
print(pp.all) #affichage coloré
pp.update() #utiliser ceci pour mettre à jour
Il y a quelques cas de test.
heapinspect/tests/ $ python test.py #cela exécutera tous les cas de test pour vérifier cet outil.
......
......
test case unsortedbins64 at test/testcases/libc-2.27/64bit
pid:6704
========================= fastbins =========================
========================= unsortedbins =========================
chunk(0x7f9aae2e6720): prev_size=0x0 size=0xb1 fd=0x7f9aacdfbca0 bk=0x7f9aae2e6880
chunk(0x7f9aae2e6880): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6720 bk=0x7f9aacdfbca0
========================= smallbins =========================
========================= largebins =========================
========================= tcache =========================
tcache[9]:
chunk(0x7f9aae2e6670): prev_size=0x0 size=0xb1 fd=0x7f9aae2e65d0 bk=0x0
chunk(0x7f9aae2e65c0): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6520 bk=0x0
chunk(0x7f9aae2e6510): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6470 bk=0x0
chunk(0x7f9aae2e6460): prev_size=0x0 size=0xb1 fd=0x7f9aae2e63c0 bk=0x0
chunk(0x7f9aae2e63b0): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6310 bk=0x0
chunk(0x7f9aae2e6300): prev_size=0x0 size=0xb1 fd=0x7f9aae2e6260 bk=0x0
chunk(0x7f9aae2e6250): prev_size=0x0 size=0xb1 fd=0x0 bk=0x0
Des docstrings détaillées ont été écrites dans le code source.
J'ai construit une documentation sphinx dans docs. Ouvrez simplement docs/build/html/index.html avec votre navigateur.
Mise à jour de la documentation.
Pas une mise à jour fonctionnelle.
Première version
La prochaine version sera une version officielle.
Ce n'est pas une version stable. J'essaie de corriger les bugs dus aux différentes glibc. J'ai besoin d'aide pour tester cela.
La prochaine version ajoutera le support multi-libc. Heapdiff et heap check seront ajoutés plus tard.
HeapShowerbins cherche maintenant à partir de bk au lieu de fd, comme le fait glibcHeapRecoder, je vais créer un heapdiffsmallbins et largebinsfastbinunsortedbinbinstcacheC_Struct pour gérer les structures Cclass HeapInspectorarenaclass Proc dans proc_utiltest.py