Develop my own GDB for pwn.
$ wget -q -O- https://raw.githubusercontent.com/bash-c/Pwngdb/master/install.sh | sh
If you dont want to use gdb-peda , you can modify the gdbinit to remove it.
I prefer pwndbg so I modified the .gdbinit to using pwndbg.
If you want to use the feature of heapinfo and tracemalloc , you need to install libc debug file (libc6-dbg & libc6-dbg:i386 for debian package)
canary
: Print the canary of using functionld
: Print the base address of ldat
: Attach by process namelibcbase
: Print the base address of libccodebase
: Print the base of code segmentheapbase
: Print the base of heapdyn
: Print the Dynamic section infomationfindcall
: Find some function callbcall
: Set the breakpoint at some function calltls
: Print the thread local storage addressfindsyscall
: Find the syscallfmtarg
: Calculate the index of format string- You need to stop on printf which has vulnerability.
force
: Calculate the nb in the house of force.heapinfo
: Print some infomation of heap- heapinfo (Address of arena)
- default is the arena of current thread
- If tcache is enable, it would show infomation of tcache entry
heapinfoall
: Print some infomation of heap (all threads)arenainfo
: Print some infomation of all arenachunkinfo
: Print the infomation of chunk- chunkinfo (Address of victim)
chunkptr
: Print the infomation of chunk- chunkptr (Address of user ptr)
mergeinfo
: Print the infomation of merge- mergeinfo (Address of victim)
printfastbin
: Print some infomation of fastbintracemalloc on
: Trace the malloc and free and detect some error .- You need to run the process first than
tracemalloc on
, it will record all of the malloc and free. - You can set the
DEBUG
in pwngdb.py , than it will print all of the malloc and free infomation such as the screeshot.
- You need to run the process first than
parseheap
: Parse heap layoutmagic
: Print useful variable and function in glibcfp
: show FILE structure- fp (Address of FILE)
fpchain
: show linked list of FILEorange
: Testhouse of orange
condition in the_IO_flush_lockp
- orange (Address of FILE)
- glibc version <= 2.23
got
: Print the Global Offset Table infomationfake_fastbin_all
: find all the fake fastbin of a given addressbpie
: set breakpoint when PIE enabled. eg:bpie 0x980
- Chunkinfo
- Mergeinfo
- Heapinfo
- Heapinfoall
- parseheap
- tracemalloc