From 1c83fbb953ee221a77371b0d0b88d19cbb6d425c Mon Sep 17 00:00:00 2001 From: Zer1t0 Date: Mon, 30 Dec 2019 02:16:46 +0100 Subject: [PATCH 001/179] added MemoryMap classes to util.proc --- pwnlib/util/proc.py | 184 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 28197ebc3..d484233a5 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -340,3 +340,187 @@ def wait_for_debugger(pid): while tracer(pid) is None: time.sleep(0.01) l.success() + + +class MemoryMap: + """Object with the information of the memory maps described in /proc//maps + + Arguments: + start_addr(int): The starting address of the map + end_addr(int): The ending address of the map + flags(MemoryMapFlags): The flags (read, write, exec, private, shared) of the map + offset(int): Offset of file mapped. 0 if no file + device_major(int): Device major version. 0 if no file + device_minor(int): Device minor version. 0 if no file + inode(int): Inode of the mapped file. 0 if no file + path(str): Path of the mapped file. Empty string if no file + + Example: + + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bin/bash") + >>> hex(m.start_addr) + '0x55db09b78000' + >>> hex(m.end_addr) + '0x55db09b81000' + >>> m.readable + True + >>> m.writable + True + >>> m.executable + False + >>> m.private + True + >>> m.shared + False + >>> hex(m.offset) + '0x114000' + >>> hex(m.device_major) + '0xfe' + >>> hex(m.device_minor) + '0x1' + >>> m.inode + 9832010 + >>> m.path + '/usr/bin/bash' + >>> str(m) + '55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010\\t\\t/usr/bin/bash' + """ + + def __init__(self, start_addr, end_addr, flags, offset, device_major, device_minor, inode, path): + self.start_addr = start_addr + self.end_addr = end_addr + self.size = end_addr - start_addr + self.flags = flags + self.offset = offset + self.device_major = device_major + self.device_minor = device_minor + self.inode = inode + self.path = path + + @property + def size(self): + """The size of the map""" + return self.end_addr - self.start_addr + + @property + def readable(self): + return self.flags.readable + + @property + def writable(self): + return self.flags.writable + + @property + def executable(self): + return self.flags.executable + + @property + def private(self): + return self.flags.private + + @property + def shared(self): + return self.flags.shared + + @classmethod + def from_str(cls, map_str): + parts = map_str.split() + + start_addr, end_addr = parts[0].split("-") + start_addr = int(start_addr, 16) + end_addr = int(end_addr, 16) + + flags = MemoryMapFlags.from_str(parts[1]) + + offset = int(parts[2], 16) + + device_major, device_minor = parts[3].split(":") + device_major = int(device_major, 16) + device_minor = int(device_minor, 16) + + inode = int(parts[4]) + + try: + path = parts[5] + except IndexError: + path = "" + + return cls(start_addr, end_addr, flags, offset, device_major, device_minor, inode, path) + + def __str__(self): + map_str = "" + map_str += "%x-%x" % (self.start_addr, self.end_addr) + map_str += " %s" % self.flags + map_str += " %08x" % self.offset + map_str += " %02x:%02x" % (self.device_major, self.device_minor) + map_str += " %d" % self.inode + + if self.path: + map_str += "\t\t%s" % self.path + + return map_str + +class MemoryMapFlags: + """Object with the information of the flags field of maps described in /proc//maps + + Arguments: + readable(bool): True if map is readable + writable(bool): True if map is writable + executable(bool): True if map can be executed + private(bool): True if map is not shared + + Example: + + >>> m = MemoryMapFlags.from_str('rw-p') + >>> m.readable + True + >>> m.writable + True + >>> m.executable + False + >>> m.private + True + >>> m.shared + False + >>> str(m) + 'rw-p' + """ + + def __init__(self, readable, writable, executable, private): + self.readable = readable + self.writable = writable + self.executable = executable + self.private = private + + @property + def shared(self): + return not self.private + + @classmethod + def from_str(cls, flags_str): + """Generates a MemoryMapFlags object from a flags string. Example: 'r-xp' + + Arguments: + flags_str(str): Flag string with the format contained in /proc/pid/maps + + Returns: + MemoryMapFlags: The object representation of the string + + Example: + + >>> str(MemoryMapFlags.from_str('r-xp')) + 'r-xp' + """ + readable = flags_str[0] == "r" + writable = flags_str[1] == "w" + executable = flags_str[2] == "x" + private = flags_str[3] == "p" + return cls(readable, writable, executable, private) + + def __str__(self): + flags_str = "" + flags_str += "r" if self.readable else "-" + flags_str += "w" if self.writable else "-" + flags_str += "x" if self.executable else "-" + flags_str += "p" if self.private else "s" + return flags_str From 3beff0dca0671cca78ad325aab5db8db35502a4d Mon Sep 17 00:00:00 2001 From: Zer1t0 Date: Mon, 30 Dec 2019 02:35:42 +0100 Subject: [PATCH 002/179] added maps method to process --- pwnlib/tubes/process.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 8730031ab..4fb7bfcba 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -26,6 +26,7 @@ from pwnlib.util.hashes import sha256file from pwnlib.util.misc import parse_ldd_output from pwnlib.util.misc import which +from pwnlib.util.proc import MemoryMap log = getLogger(__name__) @@ -876,6 +877,32 @@ def libs(self): return maps + def maps(self): + """maps() -> list of MemoryMap + + Returns a list of the maps created by the process. Each item of + the list includes the information of the lines of /proc//maps + such as the path of the mapped file, the starting and ending address + or the flags (read, write, execute, private or shared) of the map. + + Returns: + list of MemoryMap: the list of maps of the current process + + Example: + >>> p = process("/usr/bin/bash") + >>> m = p.maps()[0] + >>> str(m) # doctest: +SKIP + '556c5961b000-556c59648000 r--p 00000000 fe:01 9832010\\t\\t/usr/bin/bash' + >>> p.close() + + """ + + with open('/proc/%d/maps' % self.pid) as fmap: + maps_raw = fmap.read() + + return [MemoryMap.from_str(line) for line in maps_raw.splitlines()] + + @property def libc(self): """libc() -> ELF From 5c434d083edccb55e57ec1fe89ecf93d106310e4 Mon Sep 17 00:00:00 2001 From: Zer1t0 Date: Mon, 30 Dec 2019 03:02:14 +0100 Subject: [PATCH 003/179] changed path access from process to MemoryAccess through proc module --- pwnlib/tubes/process.py | 4 ++-- pwnlib/util/proc.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 4fb7bfcba..421d78d7e 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -26,7 +26,7 @@ from pwnlib.util.hashes import sha256file from pwnlib.util.misc import parse_ldd_output from pwnlib.util.misc import which -from pwnlib.util.proc import MemoryMap +import pwnlib.util.proc log = getLogger(__name__) @@ -900,7 +900,7 @@ def maps(self): with open('/proc/%d/maps' % self.pid) as fmap: maps_raw = fmap.read() - return [MemoryMap.from_str(line) for line in maps_raw.splitlines()] + return [pwnlib.util.proc.MemoryMap.from_str(line) for line in maps_raw.splitlines()] @property diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index d484233a5..e656c8497 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -389,7 +389,6 @@ class MemoryMap: def __init__(self, start_addr, end_addr, flags, offset, device_major, device_minor, inode, path): self.start_addr = start_addr self.end_addr = end_addr - self.size = end_addr - start_addr self.flags = flags self.offset = offset self.device_major = device_major From 88fbc55e9cc9e5454c9601c9b85438315a55daf6 Mon Sep 17 00:00:00 2001 From: Zer1t0 Date: Mon, 30 Dec 2019 20:09:55 +0100 Subject: [PATCH 004/179] fixed test in process.maps with uncommon binary path --- pwnlib/tubes/process.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 421d78d7e..f543b5827 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -889,10 +889,10 @@ def maps(self): list of MemoryMap: the list of maps of the current process Example: - >>> p = process("/usr/bin/bash") + >>> p = process('sh') >>> m = p.maps()[0] >>> str(m) # doctest: +SKIP - '556c5961b000-556c59648000 r--p 00000000 fe:01 9832010\\t\\t/usr/bin/bash' + '556c5961b000-556c59648000 r--p 00000000 fe:01 9832010\\t\\t/usr/bin/sh' >>> p.close() """ From 18a689ca26a3ebeddcca91395635af279b08e2eb Mon Sep 17 00:00:00 2001 From: Zer1t0 Date: Tue, 31 Dec 2019 02:01:23 +0100 Subject: [PATCH 005/179] added MemoryMaps instead of list of MemoryMap --- pwnlib/tubes/process.py | 17 ++++++---- pwnlib/util/proc.py | 72 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 7 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index f543b5827..1a868d0d1 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -878,21 +878,24 @@ def libs(self): return maps def maps(self): - """maps() -> list of MemoryMap + """maps() -> MemoryMaps - Returns a list of the maps created by the process. Each item of - the list includes the information of the lines of /proc//maps - such as the path of the mapped file, the starting and ending address - or the flags (read, write, execute, private or shared) of the map. + Returns a object which contains a list of the maps created by the + process. Each item of the list includes the information of the lines + of /proc//maps such as the path of the mapped file, the starting + and ending address or the flags (read, write, execute, private or shared) + of the map. Returns: - list of MemoryMap: the list of maps of the current process + MemoryMaps: the list of maps of the current process Example: >>> p = process('sh') >>> m = p.maps()[0] >>> str(m) # doctest: +SKIP '556c5961b000-556c59648000 r--p 00000000 fe:01 9832010\\t\\t/usr/bin/sh' + >>> m = p.maps().heap # doctest: +SKIP + '55b3ce54e000-55b3ce56f000 rw-p 00000000 00:00 0\\t\\t[heap]' >>> p.close() """ @@ -900,7 +903,7 @@ def maps(self): with open('/proc/%d/maps' % self.pid) as fmap: maps_raw = fmap.read() - return [pwnlib.util.proc.MemoryMap.from_str(line) for line in maps_raw.splitlines()] + return pwnlib.util.proc.MemoryMaps.from_str(maps_raw) @property diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index e656c8497..15813f020 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -342,6 +342,78 @@ def wait_for_debugger(pid): l.success() +class MemoryMaps: + """List of the memory maps described in /proc//maps + + Arguments: + maps(list of MemoryMap): The memory maps + + Example: + + >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /home/zrt/test + ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test + ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test + ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] + ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 + ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 + ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] + ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] + ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] + ... \""") + >>> str(maps.heap) + '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' + >>> str(maps.stack) + '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' + >>> len(maps) + 22 + """ + + def __init__(self, maps): + self.maps = maps + + @classmethod + def from_str(cls, maps_string): + maps = [MemoryMap.from_str(line) for line in maps_string.splitlines()] + return cls(maps) + + @property + def heap(self): + for map in self.maps: + if map.path == "[heap]": + return map + + @property + def stack(self): + for map in self.maps: + if map.path == "[stack]": + return map + + def __str__(self): + return "\n".join([str(map) for map in self.maps]) + + def __len__(self): + return len(self.maps) + + def __getitem__(self, index): + return self.maps[index] + + def __iter__(self): + return iter(self.maps) + + class MemoryMap: """Object with the information of the memory maps described in /proc//maps From e1d7340ada5ca60dc154da74cf1e9248fe6c6bd0 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Mon, 27 Jan 2020 20:27:28 +0100 Subject: [PATCH 006/179] added heap module --- pwnlib/heap/__init__.py | 0 pwnlib/heap/arena.py | 103 ++ pwnlib/heap/bins/__init__.py | 8 + pwnlib/heap/bins/bin.py | 66 ++ pwnlib/heap/bins/bin_factory.py | 21 + pwnlib/heap/bins/bin_parser.py | 84 ++ pwnlib/heap/bins/fast_bin.py | 77 ++ pwnlib/heap/bins/large_bin.py | 45 + pwnlib/heap/bins/small_bin.py | 37 + pwnlib/heap/bins/tcache.py | 222 ++++ pwnlib/heap/bins/unsorted_bin.py | 35 + pwnlib/heap/gdb.py | 1009 +++++++++++++++++ pwnlib/heap/heap.py | 188 +++ pwnlib/heap/heap_explorer.py | 285 +++++ pwnlib/heap/malloc_chunk.py | 151 +++ pwnlib/heap/malloc_state/__init__.py | 4 + pwnlib/heap/malloc_state/bins/__init__.py | 4 + pwnlib/heap/malloc_state/bins/bins.py | 56 + pwnlib/heap/malloc_state/bins/bins_indexes.py | 3 + pwnlib/heap/malloc_state/bins/parser.py | 201 ++++ pwnlib/heap/malloc_state/fastbinsy.py | 81 ++ .../malloc_state/malloc_state/__init__.py | 3 + .../malloc_state/malloc_state/malloc_state.py | 101 ++ .../heap/malloc_state/malloc_state/parser.py | 259 +++++ pwnlib/heap/memory_maps.py | 301 +++++ pwnlib/heap/printer/__init__.py | 2 + pwnlib/heap/printer/formatter.py | 253 +++++ pwnlib/heap/printer/printer.py | 130 +++ pwnlib/heap/process_informer.py | 47 + pwnlib/heap/utils.py | 45 + 30 files changed, 3821 insertions(+) create mode 100644 pwnlib/heap/__init__.py create mode 100644 pwnlib/heap/arena.py create mode 100644 pwnlib/heap/bins/__init__.py create mode 100644 pwnlib/heap/bins/bin.py create mode 100644 pwnlib/heap/bins/bin_factory.py create mode 100644 pwnlib/heap/bins/bin_parser.py create mode 100644 pwnlib/heap/bins/fast_bin.py create mode 100644 pwnlib/heap/bins/large_bin.py create mode 100644 pwnlib/heap/bins/small_bin.py create mode 100644 pwnlib/heap/bins/tcache.py create mode 100644 pwnlib/heap/bins/unsorted_bin.py create mode 100644 pwnlib/heap/gdb.py create mode 100644 pwnlib/heap/heap.py create mode 100644 pwnlib/heap/heap_explorer.py create mode 100644 pwnlib/heap/malloc_chunk.py create mode 100644 pwnlib/heap/malloc_state/__init__.py create mode 100644 pwnlib/heap/malloc_state/bins/__init__.py create mode 100644 pwnlib/heap/malloc_state/bins/bins.py create mode 100644 pwnlib/heap/malloc_state/bins/bins_indexes.py create mode 100644 pwnlib/heap/malloc_state/bins/parser.py create mode 100644 pwnlib/heap/malloc_state/fastbinsy.py create mode 100644 pwnlib/heap/malloc_state/malloc_state/__init__.py create mode 100644 pwnlib/heap/malloc_state/malloc_state/malloc_state.py create mode 100644 pwnlib/heap/malloc_state/malloc_state/parser.py create mode 100644 pwnlib/heap/memory_maps.py create mode 100644 pwnlib/heap/printer/__init__.py create mode 100644 pwnlib/heap/printer/formatter.py create mode 100644 pwnlib/heap/printer/printer.py create mode 100644 pwnlib/heap/process_informer.py create mode 100644 pwnlib/heap/utils.py diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pwnlib/heap/arena.py b/pwnlib/heap/arena.py new file mode 100644 index 000000000..01c4b8ecc --- /dev/null +++ b/pwnlib/heap/arena.py @@ -0,0 +1,103 @@ +from .bins import NoTcacheError + + +class ArenaParser: + """Class to parse the arena items and retrieve Arena objects + + Args: + malloc_state_parser (MallocStateParser) + heap_parser (HeapParser) + bin_parser (BinParser) + fast_bin_parser (FastBinParser) + tcache_parser (TcacheParser) + """ + + def __init__(self, malloc_state_parser, heap_parser, bin_parser, + fast_bin_parser, tcache_parser): + self._malloc_state_parser = malloc_state_parser + self._heap_parser = heap_parser + self._bin_parser = bin_parser + self._fast_bin_parser = fast_bin_parser + self._tcache_parser = tcache_parser + + def parse_all_from_main_malloc_state_address(self, main_malloc_state_address): + """Returns all the arenas of the process from the address of the + main arena malloc state + + Args: + main_malloc_state_address(int): The address of the main arena + malloc state + + Returns: + list of Arena + """ + + malloc_states = self._malloc_state_parser.parse_all_from_main_malloc_state_address( + main_malloc_state_address + ) + return [self.parse_from_malloc_state(malloc_state) for malloc_state in malloc_states] + + def parse_from_malloc_state(self, malloc_state): + """Returns all the arena information based on the malloc state. + + Args: + malloc_state (MallocState) + + Returns: + Arena + """ + heap = self._heap_parser.parse_from_malloc_state(malloc_state) + unsorted_bin = self._bin_parser.parse_unsorted_bin_from_malloc_state( + malloc_state + ) + small_bins = self._bin_parser.parse_small_bins_from_malloc_state( + malloc_state + ) + large_bins = self._bin_parser.parse_large_bins_from_malloc_state( + malloc_state + ) + fast_bins = self._fast_bin_parser.parse_all_from_malloc_state( + malloc_state + ) + tcaches = self._tcache_parser.parse_all_from_malloc_state(malloc_state) + + return Arena( + malloc_state, + heap, + unsorted_bin, + small_bins, + large_bins, + fast_bins, + tcaches + ) + + +class Arena(object): + """Class with the information of the arena + + Attributes: + malloc_state (MallocState) + heap (Heap) + tcaches (list of Tcaches) + fast_bins (list of FastBin) + unsorted_bin (UnsortedBin) + small_bins (list of SmallBin) + large_bins (list of LargeBin) + """ + + def __init__(self, malloc_state, heap, unsorted_bin, + small_bins, large_bins, fast_bins, tcaches): + self.malloc_state = malloc_state + self.heap = heap + self._tcaches = tcaches + self.fast_bins = fast_bins + self.unsorted_bin = unsorted_bin + self.small_bins = small_bins + self.large_bins = large_bins + + @property + def tcaches(self): + if self._tcaches is None: + raise NoTcacheError() + + return self._tcaches diff --git a/pwnlib/heap/bins/__init__.py b/pwnlib/heap/bins/__init__.py new file mode 100644 index 000000000..f4d25e239 --- /dev/null +++ b/pwnlib/heap/bins/__init__.py @@ -0,0 +1,8 @@ + +from .bin import * +from .small_bin import * +from .large_bin import * +from .unsorted_bin import * +from .tcache import * +from .fast_bin import * +from .bin_parser import * diff --git a/pwnlib/heap/bins/bin.py b/pwnlib/heap/bins/bin.py new file mode 100644 index 000000000..386578d08 --- /dev/null +++ b/pwnlib/heap/bins/bin.py @@ -0,0 +1,66 @@ + +class Bin(object): + """Base class to be inherit by the bins. This class provides the basic info + of the bin entry as well as the chunks of the bin. + + Attributes: + bin_entry (BinEntry): The entry of malloc_state.bins for the bin. + fd (int): Shortcut to the fd pointer of the entry of the current bin. + bk (int): Shortcut to the bk pointer of the entry of the current bin. + chunks_size (int): Size which should have the chunks in the bin. + malloc_chunks (list of MallocChunk): The chunks which are inserted in + the bin. + chunks (list of MallocChunk): Alias for malloc_chunks. + """ + + def __init__(self, bin_entry, malloc_chunks): + self._bin_entry = bin_entry + self._malloc_chunks = malloc_chunks + + @property + def bin_entry(self): + return self._bin_entry + + @property + def fd(self): + return self.bin_entry.fd + + @property + def bk(self): + return self.bin_entry.bk + + @property + def chunks_size(self): + return self.bin_entry.chunks_size + + @property + def malloc_chunks(self): + return self._malloc_chunks + + @property + def chunks(self): + return self.malloc_chunks + + def __len__(self): + return len(self.malloc_chunks) + + def __iter__(self): + return iter(self.malloc_chunks) + + +class BinEntry(object): + """Class to contain the common information of each bin entry. + + Attributes: + address (int): The address of the bin entry. + fd (int): The address of first chunk of the bin. + bk (int): The address of last chunk of the bin. 0 if not used. + chunks_size (int): Size which should have the chunks in the bin. 0 if + not used. + """ + + def __init__(self, address, fd, bk=0, chunks_size=0): + self.address = address + self.fd = fd + self.bk = bk + self.chunks_size = chunks_size diff --git a/pwnlib/heap/bins/bin_factory.py b/pwnlib/heap/bins/bin_factory.py new file mode 100644 index 000000000..4b1d82a7e --- /dev/null +++ b/pwnlib/heap/bins/bin_factory.py @@ -0,0 +1,21 @@ +from .small_bin import * +from .large_bin import * +from .unsorted_bin import * + + +class BinFactory: + """Helper class to create different bin classes based on the type of entry + provided. + """ + + @staticmethod + def create(bin_entry, chunks): + + if isinstance(bin_entry, LargeBinEntry): + return LargeBin(bin_entry, chunks) + elif isinstance(bin_entry, SmallBinEntry): + return SmallBin(bin_entry, chunks) + elif isinstance(bin_entry, UnsortedBinEntry): + return UnsortedBin(bin_entry, chunks) + + raise TypeError() diff --git a/pwnlib/heap/bins/bin_parser.py b/pwnlib/heap/bins/bin_parser.py new file mode 100644 index 000000000..39a7bf06e --- /dev/null +++ b/pwnlib/heap/bins/bin_parser.py @@ -0,0 +1,84 @@ +from .bin_factory import BinFactory + + +class BinParser: + """Class with the logic to parse the structs of a bin (unsorted, small + and large) from raw memory and create its respective implementation: + UnsortedBin, SmallBin or LargeBin. + + Args: + malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the + heap. + + """ + + def __init__(self, malloc_chunk_parser): + self._pointer_size = malloc_chunk_parser.pointer_size + self._malloc_chunk_parser = malloc_chunk_parser + + def parse_unsorted_bin_from_malloc_state(self, malloc_state): + """Returns the unsorted bin of the arena based on the malloc state + information. + + Args: + malloc_state (MallocState) + + Returns: + UnsortedBin + """ + return self._parse_from_bin_entry(malloc_state.unsorted_bin) + + def parse_small_bins_from_malloc_state(self, malloc_state): + """Returns the small bins of the arena based on the malloc state + information. + + Args: + malloc_state (MallocState) + + Returns: + list of SmallBin + """ + small_bins = [] + for small_entry in malloc_state.small_bins: + small_bins.append( + self._parse_from_bin_entry(small_entry) + ) + return small_bins + + def parse_large_bins_from_malloc_state(self, malloc_state): + """Returns the small bins of the arena based on the malloc state + information. + + Args: + malloc_state (MallocState) + + Returns: + list of LargeBin + """ + large_bins = [] + for large_entry in malloc_state.large_bins: + large_bins.append( + self._parse_from_bin_entry(large_entry) + ) + return large_bins + + def _parse_from_bin_entry(self, bin_entry): + chunks = [] + base_bin_address = bin_entry.address - (self._pointer_size*2) + addresses = [base_bin_address] + current_address = bin_entry.fd + while current_address not in addresses: + addresses.append(current_address) + try: + chunk = self._malloc_chunk_parser.parse_from_address( + current_address + ) + chunks.append(chunk) + current_address = chunk.fd + except OSError: + # to avoid hanging in case some pointer is corrupted + break + + return BinFactory.create(bin_entry, chunks) + + diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py new file mode 100644 index 000000000..f26255fd8 --- /dev/null +++ b/pwnlib/heap/bins/fast_bin.py @@ -0,0 +1,77 @@ +from .bin import * + + +class FastBinParser: + """Class with the logic to parse the chunks of a fast bin from raw memory + and create FastBin objects. + + Args: + malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the + heap. + """ + + def __init__(self, malloc_chunk_parser): + self._malloc_chunk_parser = malloc_chunk_parser + + def parse_all_from_malloc_state(self, malloc_state): + """Returns the fast bins of the arena based on the malloc state + information. + + Args: + malloc_state (MallocState) + + Returns: + list of FastBin + """ + fast_bins = [] + for bin_entry in malloc_state.fastbinsY: + fast_bin = self._parse_from_fast_bin_entry(bin_entry) + fast_bins.append(fast_bin) + return fast_bins + + def _parse_from_fast_bin_entry(self, fast_bin_entry): + chunks = [] + addresses = [] + current_address = fast_bin_entry.fd + while current_address != 0x0 and current_address not in addresses: + addresses.append(current_address) + try: + chunk = self._malloc_chunk_parser.parse_from_address( + current_address + ) + chunks.append(chunk) + current_address = chunk.fd + except OSError: + # to avoid hanging in case some pointer is corrupted + break + + return FastBin(fast_bin_entry, chunks) + + +class FastBin(Bin): + """Class to represent a fast bin of the glibc. + """ + + def __init__(self, bin_entry, malloc_chunks): + super(FastBin, self).__init__(bin_entry, malloc_chunks) + + def __str__(self): + msg = "Fastbin [size = {:#x}, count = {}] => {:#x}".format( + self.chunks_size, + len(self), + self.fd + ) + + for chunk in self.chunks: + msg += chunk.to_bin_str() + + return msg + + +class FastBinEntry(BinEntry): + """Class to contain the information of a entry in `fastbinsY` attribute + of `malloc_state` struct. + """ + + def __init__(self, address, fd, chunks_size): + super(FastBinEntry, self).__init__(address, fd, chunks_size=chunks_size) diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/bins/large_bin.py new file mode 100644 index 000000000..6dd05a659 --- /dev/null +++ b/pwnlib/heap/bins/large_bin.py @@ -0,0 +1,45 @@ +from .bin import * + + +class LargeBin(Bin): + """Class to represent an large bin of the glibc + """ + + def __init__(self, bin_entry, malloc_chunks): + super(LargeBin, self).__init__(bin_entry, malloc_chunks) + + @property + def min_chunks_size(self): + return self.chunks_size + + def __str__(self): + + msg = "Largebin [min_size = {:#x}, count = {}] => {:#x}".format( + self.min_chunks_size, + len(self), + self.fd + ) + + for chunk in self.malloc_chunks: + msg += chunk.to_bin_str() + + return msg + + +class LargeBinEntry(BinEntry): + """Class to contain the information of a large bin entry in `bins` of + malloc state. + """ + + def __init__(self, address, fd, bk, chunks_size): + super(LargeBinEntry, self).__init__( + address=address, fd=fd, bk=bk, chunks_size=chunks_size) + + @property + def min_chunks_size(self): + return self.chunks_size + + def __str__(self): + return "Large Bin [>={:#x}]: fd={:#x}, bk={:#x}".format( + self.chunks_size, self.fd, self.bk + ) diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/bins/small_bin.py new file mode 100644 index 000000000..e8df443b6 --- /dev/null +++ b/pwnlib/heap/bins/small_bin.py @@ -0,0 +1,37 @@ +from .bin import * + + +class SmallBin(Bin): + """Class to represent an small bin of the glibc + """ + + def __init__(self, bin_entry, malloc_chunks): + super(SmallBin, self).__init__(bin_entry, malloc_chunks) + + def __str__(self): + + msg = "Smallbin [size = {:#x}, count = {}] => {:#x}".format( + self.chunks_size, + len(self), + self.fd + ) + + for chunk in self.malloc_chunks: + msg += chunk.to_bin_str() + + return msg + + +class SmallBinEntry(BinEntry): + """Class to contain the information of a small bin entry in `bins` of + malloc state. + """ + + def __init__(self, address, fd, bk, chunks_size): + super(SmallBinEntry, self).__init__( + address, fd, bk=bk, chunks_size=chunks_size) + + def __str__(self): + return "Small Bin [{:#x}]: fd={:#x}, bk={:#x}".format( + self.chunks_size, self.fd, self.bk + ) diff --git a/pwnlib/heap/bins/tcache.py b/pwnlib/heap/bins/tcache.py new file mode 100644 index 000000000..adb6db9f1 --- /dev/null +++ b/pwnlib/heap/bins/tcache.py @@ -0,0 +1,222 @@ +from .bin import * + + +class NoTcacheError(Exception): + """Exception raised when tries to access to tcache in glibc when those are + disabled. + """ + + def __init__(self, message="Tcache are not available in the current glibc"): + super(NoTcacheError, self).__init__(message) + + +class TcachePerthreadStructParser: + """Class with the logic to parsing the tcache_perthread_struct struct + from binary data. + + + Args: + process_informer (ProcessInformer): Helper to perform operations over + memory + + """ + TCACHE_MAX_BINS = 64 + + def __init__(self, process_informer): + self._process_informer = process_informer + self._pointer_size = process_informer.pointer_size + self._unpack_pointer = process_informer.unpack_pointer + self._tcache_perthread_struct_size = self.TCACHE_MAX_BINS + \ + self._pointer_size * \ + self.TCACHE_MAX_BINS + + def parse_from_address(self, address): + """Returns a TcachePerthreadStruct object by parsing the + `tcache_perthread_struct` struct at the given address. + + Args: + address (int): Address of the `tcache_perthread_struct`. + + Returns: + TcachePerthreadStruct + """ + raw_tcache_perthread_struct = self._process_informer.read_memory( + address, + self._tcache_perthread_struct_size + ) + + return self._parse_from_raw(address, raw_tcache_perthread_struct) + + def _parse_from_raw(self, address, raw_tcache_perthread_struct): + counts = [] + for i in range(self.TCACHE_MAX_BINS): + count = raw_tcache_perthread_struct[i] + counts.append(count) + + entries = [] + for i in range(self.TCACHE_MAX_BINS): + index = self.TCACHE_MAX_BINS + i * self._pointer_size + current_address = address + index + fd = self._unpack_pointer( + raw_tcache_perthread_struct[index:index+self._pointer_size] + ) + tcache_chunks_size = self._pointer_size * 3 + i * self._pointer_size * 2 + entries.append( + TcacheEntry(current_address, fd, tcache_chunks_size) + ) + + return TcachePerthreadStruct(address, counts, entries) + + +class TcachePerthreadStruct: + """Class to contain the information of tcache_perthread_struct struct. + + typedef struct tcache_perthread_struct + { + char counts[TCACHE_MAX_BINS]; + tcache_entry *entries[TCACHE_MAX_BINS]; + } tcache_perthread_struct; + + Attributes: + counts (list of int): List with indicative counts of chunks of each + tcache + entries (list of TcacheEntry): One entrie per tcache, + which indicates the address of the first chunk in the bin + + """ + TCACHE_MAX_BINS = 64 + + def __init__(self, address, counts, entries): + self.address = address + self.counts = counts + self.entries = entries + + def __str__(self): + string = "" + for i in range(self.TCACHE_MAX_BINS): + string += "{} [{}] {:#x}\n".format( + i, + self.counts[i], + self.entries[i] + ) + return string + + +class TcacheParser: + """Abstract class that defines the public methods of a Tcache + """ + + def parse_all_from_malloc_state(self, malloc_state): + raise NotImplemented() + + +class DisabledTcacheParser: + """Class to use when tcaches are disabled + """ + + def parse_all_from_malloc_state(self, malloc_state): + """Fake method that always returns None + """ + return None + + +class EnabledTcacheParser: + """Class with the logic to parse the chunks of a tcache from raw memory + and create Tcache objects. + + Args: + malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the + heap. + heap_parser (HeapParser): a parser of the heap metadata and chunks. + """ + + def __init__(self, malloc_chunk_parser, heap_parser): + self._process_informer = malloc_chunk_parser.process_informer + self._pointer_size = malloc_chunk_parser.pointer_size + self._malloc_chunk_parser = malloc_chunk_parser + self._tcache_perthread_parser = TcachePerthreadStructParser( + malloc_chunk_parser.process_informer + ) + self._heap_parser = heap_parser + + def are_tcache_enabled(self): + return True + + def parse_all_from_malloc_state(self, malloc_state): + """Returns the tcaches of the arena based on the malloc state + information. + + Args: + malloc_state (MallocState) + + Returns: + list of Tcache + """ + heap_address, _ = self._heap_parser.calculate_heap_address_and_size_from_malloc_state(malloc_state) + return self._parse_all_from_heap_address(heap_address) + + def _parse_all_from_heap_address(self, heap_address): + tcache_perthread_struct_address = heap_address + 0x10 + tcache_perthread = self._tcache_perthread_parser.parse_from_address( + tcache_perthread_struct_address + ) + + tcaches = [] + for entry in tcache_perthread.entries: + tcache = self._parse_from_tcache_entry(entry) + tcaches.append(tcache) + return tcaches + + def _parse_from_tcache_entry(self, entry): + pointer = entry.fd + addresses = [entry.address] + chunks = [] + while pointer != 0x0 and pointer not in addresses: + addresses.append(pointer) + try: + chunk_base_address = pointer - self._pointer_size*2 + chunk = self._malloc_chunk_parser.parse_from_address( + chunk_base_address + ) + chunks.append(chunk) + pointer = chunk.fd + except OSError: + # to avoid hanging in case some pointer is corrupted + break + + return Tcache(entry, chunks) + + +class Tcache(Bin): + """Class to represent a tcache of the glibc + + Attributes: + bin_entry (TcacheEntry): The entry of tcache_perthread_struct for the + bin. + chunks (list of MallocChunk): The chunks which are inserted in + the tcache. + """ + + def __init__(self, bin_entry, malloc_chunks): + super(Tcache, self).__init__(bin_entry, malloc_chunks) + + def __str__(self): + msg = "Tcache [size = {:#x}, count = {}] => {:#x}".format( + self.chunks_size, + len(self), + self.fd + ) + + for chunk in self.chunks: + msg += chunk.to_bin_str() + + return msg + + +class TcacheEntry(BinEntry): + """Class to contain the information of each entry in + tcache_perthread_struct struct. + """ + + def __init__(self, address, fd, chunks_size): + super(TcacheEntry, self).__init__(address, fd, chunks_size=chunks_size) diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py new file mode 100644 index 000000000..e449a89f8 --- /dev/null +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -0,0 +1,35 @@ +from .bin import * + + +class UnsortedBin(Bin): + """Class to represent an unsorted bin of the glibc + """ + + def __init__(self, bin_entry, malloc_chunks): + super(UnsortedBin, self).__init__(bin_entry, malloc_chunks) + + def __str__(self): + + msg = "Unsorted bins [count = {}] => {:#x}".format( + len(self), + self.fd + ) + + for chunk in self.malloc_chunks: + msg += chunk.to_bin_str() + + return msg + + +class UnsortedBinEntry(BinEntry): + """Class to contain the information of a unsorted bin entry in `bins` of + malloc state. + """ + + def __init__(self, address, fd, bk): + super(UnsortedBinEntry, self).__init__(address, fd, bk=bk) + + def __str__(self): + return "Unsorted Bin : fd={:#x}, bk={:#x}".format( + self.fd, self.bk + ) diff --git a/pwnlib/heap/gdb.py b/pwnlib/heap/gdb.py new file mode 100644 index 000000000..b299b5d75 --- /dev/null +++ b/pwnlib/heap/gdb.py @@ -0,0 +1,1009 @@ +# -*- coding: utf-8 -*- +""" +During exploit development, it is frequently useful to debug the +target binary under GDB. + +Pwntools makes this easy-to-do with a handful of helper routines, designed +to make your exploit-debug-update cycles much faster. + +Useful Functions +---------------- + +- :func:`attach` - Attach to an existing process +- :func:`debug` - Start a new process under a debugger, stopped at the first instruction +- :func:`debug_shellcode` - Build a binary with the provided shellcode, and start it under a debugger + +Debugging Tips +-------------- + +The :func:`attach` and :func:`debug` functions will likely be your bread and +butter for debugging. + +Both allow you to provide a script to pass to GDB when it is started, so that +it can automatically set your breakpoints. + +Attaching to Processes +~~~~~~~~~~~~~~~~~~~~~~ + +To attach to an existing process, just use :func:`attach`. It is surprisingly +versatile, and can attach to a :class:`.process` for simple +binaries, or will automatically find the correct process to attach to for a +forking server, if given a :class:`.remote` object. + +Spawning New Processes +~~~~~~~~~~~~~~~~~~~~~~ + +Attaching to processes with :func:`attach` is useful, but the state the process +is in may vary. If you need to attach to a process very early, and debug it from +the very first instruction (or even the start of ``main``), you instead should use +:func:`debug`. + +When you use :func:`debug`, the return value is a :class:`.tube` object +that you interact with exactly like normal. + +Tips and Troubleshooting +------------------------ + +``NOPTRACE`` magic argument +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It's quite cumbersom to comment and un-comment lines containing `attach`. + +You can cause these lines to be a no-op by running your script with the +``NOPTRACE`` argument appended, or with ``PWNLIB_NOPTRACE=1`` in the environment. + +:: + + $ python exploit.py NOPTRACE + [+] Starting local process '/bin/bash': Done + [!] Skipping debug attach since context.noptrace==True + ... + +Kernel Yama ptrace_scope +~~~~~~~~~~~~~~~~~~~~~~~~ + +The Linux kernel v3.4 introduced a security mechanism called ``ptrace_scope``, +which is intended to prevent processes from debugging eachother unless there is +a direct parent-child relationship. + +This causes some issues with the normal Pwntools workflow, since the process +heirarchy looks like this: + +:: + + python ---> target + `--> gdb + +Note that ``python`` is the parent of ``target``, not ``gdb``. + +In order to avoid this being a problem, Pwntools uses the function +``prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY)``. This disables Yama +for any processes launched by Pwntools via :class:`.process` or via +:meth:`.ssh.process`. + +Older versions of Pwntools did not perform the ``prctl`` step, and +required that the Yama security feature was disabled systemwide, which +requires ``root`` access. + +Member Documentation +=============================== +""" +from __future__ import absolute_import +from __future__ import division + +import os +import random +import re +import shlex +import six +import tempfile +import time + +from pwnlib import adb +from pwnlib import atexit +from pwnlib import elf +from pwnlib import qemu +from pwnlib import tubes +from pwnlib.asm import _bfdname +from pwnlib.asm import make_elf +from pwnlib.asm import make_elf_from_assembly +from pwnlib.context import LocalContext +from pwnlib.context import context +from pwnlib.log import getLogger +from pwnlib.util import misc +from pwnlib.util import proc + +log = getLogger(__name__) + +@LocalContext +def debug_assembly(asm, gdbscript=None, vma=None): + r"""debug_assembly(asm, gdbscript=None, vma=None) -> tube + + Creates an ELF file, and launches it under a debugger. + + This is identical to debug_shellcode, except that + any defined symbols are available in GDB, and it + saves you the explicit call to asm(). + + Arguments: + asm(str): Assembly code to debug + gdbscript(str): Script to run in GDB + vma(int): Base address to load the shellcode at + \**kwargs: Override any :obj:`pwnlib.context.context` values. + + Returns: + :class:`.process` + + Example: + + >>> assembly = shellcraft.echo("Hello world!\n") + >>> io = gdb.debug_assembly(assembly) + >>> io.recvline() + b'Hello world!\n' + """ + tmp_elf = make_elf_from_assembly(asm, vma=vma, extract=False) + os.chmod(tmp_elf, 0o777) + + atexit.register(lambda: os.unlink(tmp_elf)) + + if context.os == 'android': + android_path = '/data/data/%s' % os.path.basename(tmp_elf) + adb.push(tmp_elf, android_path) + tmp_elf = android_path + + return debug(tmp_elf, gdbscript=gdbscript, arch=context.arch) + +@LocalContext +def debug_shellcode(data, gdbscript=None, vma=None): + r"""debug_shellcode(data, gdbscript=None, vma=None) -> tube + Creates an ELF file, and launches it under a debugger. + + Arguments: + data(str): Assembled shellcode bytes + gdbscript(str): Script to run in GDB + vma(int): Base address to load the shellcode at + \**kwargs: Override any :obj:`pwnlib.context.context` values. + + Returns: + :class:`.process` + + Example: + + >>> assembly = shellcraft.echo("Hello world!\n") + >>> shellcode = asm(assembly) + >>> io = gdb.debug_shellcode(shellcode) + >>> io.recvline() + b'Hello world!\n' + """ + if isinstance(data, six.text_type): + log.error("Shellcode is cannot be unicode. Did you mean debug_assembly?") + tmp_elf = make_elf(data, extract=False, vma=vma) + os.chmod(tmp_elf, 0o777) + + atexit.register(lambda: os.unlink(tmp_elf)) + + if context.os == 'android': + android_path = '/data/data/%s' % os.path.basename(tmp_elf) + adb.push(tmp_elf, android_path) + tmp_elf = android_path + + return debug(tmp_elf, gdbscript=gdbscript, arch=context.arch) + +def _gdbserver_args(pid=None, path=None, args=None, which=None, env=None): + """_gdbserver_args(pid=None, path=None, args=None, which=None, env=None) -> list + + Sets up a listening gdbserver, to either connect to the specified + PID, or launch the specified binary by its full path. + + Arguments: + pid(int): Process ID to attach to + path(str): Process to launch + args(list): List of arguments to provide on the debugger command line + which(callaable): Function to find the path of a binary. + + Returns: + A list of arguments to invoke gdbserver. + """ + if [pid, path, args].count(None) != 2: + log.error("Must specify exactly one of pid, path, or args") + + if not which: + log.error("Must specify which.") + + gdbserver = '' + + if not args: + args = [str(path or pid)] + + # Android targets have a distinct gdbserver + if context.bits == 64: + gdbserver = which('gdbserver64') + + if not gdbserver: + gdbserver = which('gdbserver') + + if not gdbserver: + log.error("gdbserver is not installed") + + orig_args = args + + gdbserver_args = [gdbserver, '--multi'] + if context.aslr: + gdbserver_args += ['--no-disable-randomization'] + else: + log.warn_once("Debugging process with ASLR disabled") + + if pid: + gdbserver_args += ['--once', '--attach'] + + if env: + env_args = [] + for key in tuple(env): + if key.startswith('LD_'): # LD_PRELOAD / LD_LIBRARY_PATH etc. + env_args.append('{}={}'.format(key, env.pop(key))) + if env_args: + gdbserver_args += ['--wrapper', 'env'] + env_args + ['--'] + + gdbserver_args += ['localhost:0'] + gdbserver_args += args + + return gdbserver_args + +def _gdbserver_port(gdbserver, ssh): + which = _get_which(ssh) + + # Process /bin/bash created; pid = 14366 + # Listening on port 34816 + process_created = gdbserver.recvline() + + if process_created.startswith(b'ERROR:'): + raise ValueError( + 'Failed to spawn process under gdbserver. gdbserver error message: %s' % process_created + ) + + gdbserver.pid = int(process_created.split()[-1], 0) + + listening_on = b'' + while b'Listening' not in listening_on: + listening_on = gdbserver.recvline() + + port = int(listening_on.split()[-1]) + + # Set up port forarding for SSH + if ssh: + remote = ssh.connect_remote('127.0.0.1', port) + listener = tubes.listen.listen(0) + port = listener.lport + + # Disable showing GDB traffic when debugging verbosity is increased + remote.level = 'error' + listener.level = 'error' + + # Hook them up + remote.connect_both(listener) + + # Set up port forwarding for ADB + elif context.os == 'android': + adb.forward(port) + + return port + +def _get_which(ssh=None): + if ssh: return ssh.which + elif context.os == 'android': return adb.which + else: return misc.which + +def _get_runner(ssh=None): + if ssh: return ssh.process + elif context.os == 'android': return adb.process + else: return tubes.process.process + +@LocalContext +def debug(args, gdbscript=None, exe=None, ssh=None, env=None, sysroot=None, **kwargs): + r"""debug(args) -> tube + + Launch a GDB server with the specified command line, + and launches GDB to attach to it. + + Arguments: + args(list): Arguments to the process, similar to :class:`.process`. + gdbscript(str): GDB script to run. + exe(str): Path to the executable on disk + env(dict): Environment to start the binary in + ssh(:class:`.ssh`): Remote ssh session to use to launch the process. + sysroot(str): Foreign-architecture sysroot, used for QEMU-emulated binaries + and Android targets. + + Returns: + :class:`.process` or :class:`.ssh_channel`: A tube connected to the target process + + Notes: + + The debugger is attached automatically, and you can debug everything + from the very beginning. This requires that both ``gdb`` and ``gdbserver`` + are installed on your machine. + + When GDB opens via :func:`debug`, it will initially be stopped on the very first + instruction of the dynamic linker (``ld.so``) for dynamically-linked binaries. + + Only the target binary and the linker will be loaded in memory, so you cannot + set breakpoints on shared library routines like ``malloc`` since ``libc.so`` + has not even been loaded yet. + + There are several ways to handle this: + + 1. Set a breakpoint on the executable's entry point (generally, ``_start``) + - This is only invoked after all of the required shared libraries + are loaded. + - You can generally get the address via the GDB command ``info file``. + 2. Use pending breakpoints via ``set breakpoint pending on`` + - This has the side-effect of setting breakpoints for **every** function + which matches the name. For ``malloc``, this will generally set a + breakpoint in the executable's PLT, in the linker's internal ``malloc``, + and eventaully in ``libc``'s malloc. + 3. Wait for libraries to be loaded with ``set stop-on-solib-event 1`` + - There is no way to stop on any specific library being loaded, and sometimes + multiple libraries are loaded and only a single breakpoint is issued. + - Generally, you just add a few ``continue`` commands until things are set up + the way you want it to be. + + Examples: + + >>> # Create a new process, and stop it at 'main' + >>> io = gdb.debug('bash', ''' + ... break main + ... continue + ... ''') + >>> io.sendline("echo hello") + >>> io.recvline() + b'hello\n' + >>> io.interactive() # doctest: +SKIP + >>> io.close() + + >>> # Create a new process, and stop it at '_start' + >>> io = gdb.debug('bash', ''' + ... # Wait until we hit the main executable's entry point + ... break _start + ... continue + ... + ... # Now set breakpoint on shared library routines + ... break malloc + ... break free + ... continue + ... ''') + >>> io.sendline("echo hello") + >>> io.recvline() + b'hello\n' + >>> io.interactive() # doctest: +SKIP + >>> io.close() + + You can use :func:`debug` to spawn new processes on remote machines as well, + by using the ``ssh=`` keyword to pass in your :class:`.ssh` instance. + + >>> # Connect to the SSH server + + >>> # Start a process on the server + >>> shell = ssh('travis', 'example.pwnme', password='demopass') + >>> io = gdb.debug(['bash'], + ... ssh = shell, + ... gdbscript = ''' + ... break main + ... continue + ... ''') + + >>> # Send a command to Bash + >>> io.sendline("echo hello") + + >>> # Interact with the process + >>> io.interactive() # doctest: +SKIP + >>> io.close() + """ + if isinstance(args, (int, tubes.process.process, tubes.ssh.ssh_channel)): + log.error("Use gdb.attach() to debug a running process") + + if isinstance(args, (bytes, six.text_type)): + args = [args] + + orig_args = args + + runner = _get_runner(ssh) + which = _get_which(ssh) + gdbscript = gdbscript or '' + + if context.noptrace: + log.warn_once("Skipping debugger since context.noptrace==True") + return runner(args, executable=exe, env=env) + + if ssh or context.native or (context.os == 'android'): + args = _gdbserver_args(args=args, which=which, env=env) + else: + qemu_port = random.randint(1024, 65535) + qemu_user = qemu.user_path() + sysroot = sysroot or qemu.ld_prefix(env=env) + if not qemu_user: + log.error("Cannot debug %s binaries without appropriate QEMU binaries" % context.arch) + qemu_args = [qemu_user, '-g', str(qemu_port)] + if sysroot: + qemu_args += ['-L', sysroot] + args = qemu_args + args + + # Use a sane default sysroot for Android + if not sysroot and context.os == 'android': + sysroot = 'remote:/' + + # Make sure gdbserver/qemu is installed + if not which(args[0]): + log.error("%s is not installed" % args[0]) + + if not ssh: + exe = exe or which(orig_args[0]) + if not (exe and os.path.exists(exe)): + log.error("%s does not exist" % exe) + + # Start gdbserver/qemu + # (Note: We override ASLR here for the gdbserver process itself.) + gdbserver = runner(args, env=env, aslr=1, **kwargs) + + # Set the .executable on the process object. + gdbserver.executable = exe + + # Find what port we need to connect to + if context.native or (context.os == 'android'): + port = _gdbserver_port(gdbserver, ssh) + else: + port = qemu_port + + host = '127.0.0.1' + if not ssh and context.os == 'android': + host = context.adb_host + + attach((host, port), exe=exe, gdbscript=gdbscript, need_ptrace_scope = False, ssh=ssh, sysroot=sysroot) + + # gdbserver outputs a message when a client connects + garbage = gdbserver.recvline(timeout=1) + + # Some versions of gdbserver output an additional message + garbage2 = gdbserver.recvline_startswith(b"Remote debugging from host ", timeout=1) + + return gdbserver + +def get_gdb_arch(): + return { + 'amd64': 'i386:x86-64', + 'powerpc': 'powerpc:common', + 'powerpc64': 'powerpc:common64', + 'mips64': 'mips:isa64', + 'thumb': 'arm', + 'sparc64': 'sparc:v9' + }.get(context.arch, context.arch) + +def binary(): + """binary() -> str + + Returns: + str: Path to the appropriate ``gdb`` binary to use. + + Example: + + >>> gdb.binary() # doctest: +SKIP + '/usr/bin/gdb' + """ + gdb = misc.which('pwntools-gdb') or misc.which('gdb') + + if not context.native: + multiarch = misc.which('gdb-multiarch') + + if multiarch: + return multiarch + log.warn_once('Cross-architecture debugging usually requires gdb-multiarch\n' \ + '$ apt-get install gdb-multiarch') + + if not gdb: + log.error('GDB is not installed\n' + '$ apt-get install gdb') + + return gdb + +@LocalContext +def attach(target, gdbscript = '', exe = None, need_ptrace_scope = True, gdb_args = None, ssh = None, sysroot = None): + r"""attach(target, gdbscript = None, exe = None, arch = None, ssh = None) -> None + + Start GDB in a new terminal and attach to `target`. + + Arguments: + target: The target to attach to. + gdbscript(:obj:`str` or :obj:`file`): GDB script to run after attaching. + exe(str): The path of the target binary. + arch(str): Architechture of the target binary. If `exe` known GDB will + detect the architechture automatically (if it is supported). + gdb_args(list): List of additional arguments to pass to GDB. + sysroot(str): Foreign-architecture sysroot, used for QEMU-emulated binaries + and Android targets. + + Returns: + PID of the GDB process (or the window which it is running in). + + Notes: + + The ``target`` argument is very robust, and can be any of the following: + + :obj:`int` + PID of a process + :obj:`str` + Process name. The youngest process is selected. + :obj:`tuple` + Host, port pair of a listening ``gdbserver`` + :class:`.process` + Process to connect to + :class:`.sock` + Connected socket. The executable on the other end of the connection is attached to. + Can be any socket type, including :class:`.listen` or :class:`.remote`. + :class:`.ssh_channel` + Remote process spawned via :meth:`.ssh.process`. + This will use the GDB installed on the remote machine. + If a password is required to connect, the ``sshpass`` program must be installed. + + Examples: + + >>> # Attach directly to pid 1234 + >>> gdb.attach(1234) # doctest: +SKIP + + + >>> # Attach to the youngest "bash" process + >>> gdb.attach('bash') # doctest: +SKIP + + + >>> # Start a process + >>> bash = process('bash') + + >>> # Attach the debugger + >>> pid = gdb.attach(bash, ''' + ... set follow-fork-mode child + ... break execve + ... continue + ... ''') + + >>> # Interact with the process + >>> bash.sendline("whoami") + >>> bash.recvline() + b'travis\n' + >>> bash.close() + + >>> # Start a forking server + >>> server = process(['socat', 'tcp-listen:12345,fork,reuseaddr', 'exec:/bin/bash']) + >>> sleep(1) + + >>> # Connect to the server + >>> io = remote('127.0.0.1', 12345) + + >>> # Connect the debugger to the server-spawned process + >>> pid = gdb.attach(io, ''' + ... break exit + ... continue + ... ''', exe = '/bin/bash') + + >>> # Talk to the spawned 'sh' + >>> io.sendline("echo hello") + >>> io.recvline() + b'hello\n' + >>> io.sendline("exit") + + >>> io.close() + + >>> # Connect to the SSH server + >>> shell = ssh('travis', 'example.pwnme', password='demopass') + + >>> # Start a process on the server + >>> cat = shell.process(['cat']) + + >>> # Attach a debugger to it + >>> gdb.attach(cat, ''' + ... break exit + ... continue + ... ''') + + >>> cat.sendline("hello") + >>> cat.recvline() + b'hello\n' + >>> # Cause `cat` to exit + >>> cat.close() + """ + if context.noptrace: + log.warn_once("Skipping debug attach since context.noptrace==True") + return + + # if gdbscript is a file object, then read it; we probably need to run some + # more gdb script anyway + if hasattr(gdbscript, 'read'): + with gdbscript: + gdbscript = gdbscript.read() + + # enable gdb.attach(p, 'continue') + if gdbscript and not gdbscript.endswith('\n'): + gdbscript += '\n' + + # Use a sane default sysroot for Android + if not sysroot and context.os == 'android': + sysroot = 'remote:/' + + # gdb script to run before `gdbscript` + pre = '' + if not context.native: + pre += 'set endian %s\n' % context.endian + pre += 'set architecture %s\n' % get_gdb_arch() + if sysroot: + pre += 'set sysroot %s\n' % sysroot + + if context.os == 'android': + pre += 'set gnutarget ' + _bfdname() + '\n' + + # let's see if we can find a pid to attach to + pid = None + if isinstance(target, six.integer_types): + # target is a pid, easy peasy + pid = target + elif isinstance(target, str): + # pidof picks the youngest process + pidof = proc.pidof + + if context.os == 'android': + pidof = adb.pidof + + pids = pidof(target) + if not pids: + log.error('No such process: %s' % target) + pid = pids[0] + log.info('Attaching to youngest process "%s" (PID = %d)' % + (target, pid)) + elif isinstance(target, tubes.ssh.ssh_channel): + if not target.pid: + log.error("PID unknown for channel") + + shell = target.parent + + tmpfile = shell.mktemp() + if six.PY3: + tmpfile = tmpfile.decode() + gdbscript = 'shell rm %s\n%s' % (tmpfile, gdbscript) + shell.upload_data(gdbscript or '', tmpfile) + + cmd = ['ssh', '-C', '-t', '-p', str(shell.port), '-l', shell.user, shell.host] + if shell.password: + if not misc.which('sshpass'): + log.error("sshpass must be installed to debug ssh processes") + cmd = ['sshpass', '-p', shell.password] + cmd + if shell.keyfile: + cmd += ['-i', shell.keyfile] + exefile = target.executable + if six.PY3: + exefile = exefile.decode() + cmd += ['gdb -q %s %s -x "%s"' % (exefile, + target.pid, + tmpfile)] + + misc.run_in_new_terminal(' '.join(cmd)) + return + + elif isinstance(target, tubes.sock.sock): + pids = proc.pidof(target) + if not pids: + log.error('could not find remote process (%s:%d) on this machine' % + target.sock.getpeername()) + pid = pids[0] + elif isinstance(target, tubes.process.process): + pid = proc.pidof(target)[0] + exe = exe or target.executable + elif isinstance(target, tuple) and len(target) == 2: + host, port = target + + if context.os != 'android': + pre += 'target remote %s:%d\n' % (host, port) + else: + # Android debugging is done over gdbserver, which can't follow + # new inferiors (tldr; follow-fork-mode child) unless it is run + # in extended-remote mode. + pre += 'target extended-remote %s:%d\n' % (host, port) + pre += 'set detach-on-fork off\n' + + def findexe(): + for spid in proc.pidof(target): + sexe = proc.exe(spid) + name = os.path.basename(sexe) + # XXX: parse cmdline + if name.startswith('qemu-') or name.startswith('gdbserver'): + exe = proc.cmdline(spid)[-1] + return os.path.join(proc.cwd(spid), exe) + + exe = exe or findexe() + elif isinstance(target, elf.corefile.Corefile): + pre += 'target core %s\n' % target.path + else: + log.error("don't know how to attach to target: %r" % target) + + # if we have a pid but no exe, just look it up in /proc/ + if pid and not exe: + exe_fn = proc.exe + if context.os == 'android': + exe_fn = adb.proc_exe + exe = exe_fn(pid) + + if not pid and not exe and not ssh: + log.error('could not find target process') + + cmd = binary() + + if gdb_args: + cmd += ' ' + cmd += ' '.join(gdb_args) + + if context.gdbinit: + cmd += ' -nh ' # ignore ~/.gdbinit + cmd += ' -x %s ' % context.gdbinit # load custom gdbinit + + cmd += ' -q ' + + if exe and context.native: + if not ssh and not os.path.isfile(exe): + log.error('No such file: %s' % exe) + cmd += ' "%s"' % exe + + if pid and not context.os == 'android': + cmd += ' %d' % pid + + if context.os == 'android' and pid: + runner = _get_runner() + which = _get_which() + gdb_cmd = _gdbserver_args(pid=pid, which=which, env=env) + gdbserver = runner(gdb_cmd) + port = _gdbserver_port(gdbserver, None) + host = context.adb_host + pre += 'target extended-remote %s:%i\n' % (context.adb_host, port) + + # gdbserver on Android sets 'detach-on-fork on' which breaks things + # when you're trying to debug anything that forks. + pre += 'set detach-on-fork off\n' + + gdbscript = pre + (gdbscript or '') + + if gdbscript: + tmp = tempfile.NamedTemporaryFile(prefix = 'pwn', suffix = '.gdb', + delete = False, mode = 'w+') + log.debug('Wrote gdb script to %r\n%s' % (tmp.name, gdbscript)) + gdbscript = 'shell rm %s\n%s' % (tmp.name, gdbscript) + + tmp.write(gdbscript) + tmp.close() + cmd += ' -x "%s"' % (tmp.name) + + log.info('running in new terminal: %s' % cmd) + + gdb_pid = misc.run_in_new_terminal(cmd) + + if pid and context.native: + proc.wait_for_debugger(pid) + + return gdb_pid + +def ssh_gdb(ssh, argv, gdbscript = None, arch = None, **kwargs): + if not isinstance(argv, (list, tuple)): + argv = [argv] + + exe = argv[0] + argv = ["gdbserver", "--multi", "127.0.0.1:0"] + argv + + # Download the executable + local_exe = os.path.basename(exe) + ssh.download_file(ssh.which(exe), local_exe) + + # Run the process + c = ssh.process(argv, **kwargs) + + # Find the port for the gdb server + c.recvuntil(b'port ') + line = c.recvline().strip() + gdbport = re.match(b'[0-9]+', line) + if gdbport: + gdbport = int(gdbport.group(0)) + + l = tubes.listen.listen(0) + forwardport = l.lport + + attach(('127.0.0.1', forwardport), gdbscript, local_exe, arch, ssh=ssh) + l.wait_for_connection().connect_both(ssh.connect_remote('127.0.0.1', gdbport)) + return c + +def find_module_addresses(binary, ssh=None, ulimit=False): + """ + Cheat to find modules by using GDB. + + We can't use ``/proc/$pid/map`` since some servers forbid it. + This breaks ``info proc`` in GDB, but ``info sharedlibrary`` still works. + Additionally, ``info sharedlibrary`` works on FreeBSD, which may not have + procfs enabled or accessible. + + The output looks like this: + + :: + + info proc mapping + process 13961 + warning: unable to open /proc file '/proc/13961/maps' + + info sharedlibrary + From To Syms Read Shared Object Library + 0xf7fdc820 0xf7ff505f Yes (*) /lib/ld-linux.so.2 + 0xf7fbb650 0xf7fc79f8 Yes /lib32/libpthread.so.0 + 0xf7e26f10 0xf7f5b51c Yes (*) /lib32/libc.so.6 + (*): Shared library is missing debugging information. + + Note that the raw addresses provided by ``info sharedlibrary`` are actually + the address of the ``.text`` segment, not the image base address. + + This routine automates the entire process of: + + 1. Downloading the binaries from the remote server + 2. Scraping GDB for the information + 3. Loading each library into an ELF + 4. Fixing up the base address vs. the ``.text`` segment address + + Arguments: + binary(str): Path to the binary on the remote server + ssh(pwnlib.tubes.tube): SSH connection through which to load the libraries. + If left as :const:`None`, will use a :class:`pwnlib.tubes.process.process`. + ulimit(bool): Set to :const:`True` to run "ulimit -s unlimited" before GDB. + + Returns: + A list of pwnlib.elf.ELF objects, with correct base addresses. + + Example: + + >>> with context.local(log_level=9999): + ... shell = ssh(host='example.pwnme', + ... user='travis', + ... password='demopass') + ... bash_libs = gdb.find_module_addresses('/bin/bash', shell) + >>> os.path.basename(bash_libs[0].path) + 'libc.so.6' + >>> hex(bash_libs[0].symbols['system']) # doctest: +SKIP + '0x7ffff7634660' + """ + # + # Download all of the remote libraries + # + if ssh: + runner = ssh.run + local_bin = ssh.download_file(binary) + local_elf = elf.ELF(os.path.basename(binary)) + local_libs = ssh.libs(binary) + + else: + runner = tubes.process.process + local_elf = elf.ELF(binary) + local_libs = local_elf.libs + + entry = local_elf.header.e_entry + + # + # Get the addresses from GDB + # + libs = {} + cmd = "gdb -q --args %s" % (binary) + expr = re.compile(r'(0x\S+)[^/]+(.*)') + + if ulimit: + cmd = 'sh -c "(ulimit -s unlimited; %s)"' % cmd + + cmd = shlex.split(cmd) + + with runner(cmd) as gdb: + if context.aslr: + gdb.sendline('set disable-randomization off') + gdb.send(""" + set prompt + break *%#x + run + """ % entry) + gdb.clean(2) + gdb.sendline('info sharedlibrary') + lines = context._decode(gdb.recvrepeat(2)) + + for line in lines.splitlines(): + m = expr.match(line) + if m: + libs[m.group(2)] = int(m.group(1),16) + gdb.sendline('kill') + gdb.sendline('y') + gdb.sendline('quit') + + # + # Fix up all of the addresses against the .text address + # + rv = [] + + for remote_path,text_address in sorted(libs.items()): + # Match up the local copy to the remote path + try: + path = next(p for p in local_libs.keys() if remote_path in p) + except StopIteration: + print("Skipping %r" % remote_path) + continue + + # Load it + lib = elf.ELF(path) + + # Find its text segment + text = lib.get_section_by_name('.text') + + # Fix the address + lib.address = text_address - text.header.sh_addr + rv.append(lib) + + return rv + +def corefile(process): + r"""Drops a core file for the process. + + Arguments: + process: Process to dump + + Returns: + :class:`.Core`: The generated core file + """ + + if context.noptrace: + log.warn_once("Skipping corefile since context.noptrace==True") + return + + corefile_path = './core.%s.%i' % (os.path.basename(process.executable), + process.pid) + + # Due to https://sourceware.org/bugzilla/show_bug.cgi?id=16092 + # will disregard coredump_filter, and will not dump private mappings. + if version() < (7,11): + log.warn_once('The installed GDB (%s) does not emit core-dumps which ' + 'contain all of the data in the process.\n' + 'Upgrade to GDB >= 7.11 for better core-dumps.' % binary()) + + # This is effectively the same as what the 'gcore' binary does + gdb_args = ['-batch', + '-q', + '--nx', + '-ex', '"set pagination off"', + '-ex', '"set height 0"', + '-ex', '"set width 0"', + '-ex', '"set use-coredump-filter on"', + '-ex', '"generate-core-file %s"' % corefile_path, + '-ex', 'detach'] + + with context.local(terminal = ['sh', '-c']): + with context.quiet: + pid = attach(process, gdb_args=gdb_args) + os.waitpid(pid, 0) + + return elf.corefile.Core(corefile_path) + +def version(program='gdb'): + """Gets the current GDB version. + + Note: + Requires that GDB version meets the following format: + + ``GNU gdb (GDB) 7.12`` + + Returns: + tuple: A tuple containing the version numbers + + Example: + + >>> (7,0) <= gdb.version() <= (8,0) + True + """ + program = misc.which(program) + expr = br'([0-9]+\.?)+' + + with tubes.process.process([program, '--version'], level='error') as gdb: + version = gdb.recvline() + + versions = re.search(expr, version).group() + + return tuple(map(int, versions.split(b'.'))) diff --git a/pwnlib/heap/heap.py b/pwnlib/heap/heap.py new file mode 100644 index 000000000..eb86d6250 --- /dev/null +++ b/pwnlib/heap/heap.py @@ -0,0 +1,188 @@ +from .utils import align_address +from construct import * + + +class HeapParser: + """Class to parse the chunks of a heap and return a Heap object + + Args: + malloc_chunk_parser (MallocChunkParser): parser for the raw malloc + chunks + malloc_state_parser (MallocStateParser): parser for the raw malloc_state + struct + """ + + def __init__(self, malloc_chunk_parser, malloc_state_parser): + self._process_informer = malloc_chunk_parser.process_informer + self._pointer_size = malloc_chunk_parser.pointer_size + self._malloc_alignment = self._pointer_size * 2 + self._raw_heap_info_size = self._pointer_size * 4 + + self._malloc_chunk_parser = malloc_chunk_parser + self._malloc_state_parser = malloc_state_parser + self._heap_info_parser = HeapInfoParser(self._process_informer) + + def parse_from_malloc_state(self, malloc_state): + """Returns the heap of the arena of the given malloc state + + Args: + malloc_state (MallocState) + + Returns: + Heap + """ + + heap_address, heap_size = self.calculate_heap_address_and_size_from_malloc_state(malloc_state) + return self._parse_from_address(heap_address, heap_size) + + def calculate_heap_address_and_size_from_malloc_state(self, malloc_state): + """Returns the heap start address and heap size, based on the + information of the provided malloc state + + Args: + malloc_state (MallocState) + + Returns: + tuple(int, int) + """ + maps = self._process_informer.maps() + current_heap_map = maps.map_with_address(malloc_state.top) + main_heap_map = maps.heap + + is_main_heap = current_heap_map.address == main_heap_map.address + if is_main_heap: + heap_start_address = current_heap_map.address + else: + heap_start_address = self._calculate_non_main_heap_start_address( + current_heap_map.address + ) + + heap_size = current_heap_map.size - \ + (heap_start_address - current_heap_map.start_address) + return heap_start_address, heap_size + + def _calculate_non_main_heap_start_address(self, heap_map_start_address): + heap_info = self._heap_info_parser.parse_from_address(heap_map_start_address) + heap_start_address = heap_info.ar_ptr + \ + self._malloc_state_parser.raw_malloc_state_size + return align_address(heap_start_address, self._malloc_alignment) + + def _parse_from_address(self, address, size): + raw_heap = self._process_informer.read_memory(address, size) + return self._parse_from_raw(address, raw_heap) + + def _parse_from_raw(self, heap_address, raw_heap): + offset = 0 + chunks = [] + + first_chunk = self._malloc_chunk_parser.parse_from_raw( + heap_address, + raw_heap + ) + + if first_chunk.size == 0: + offset += self._pointer_size*2 + + while offset < len(raw_heap): + current_address = heap_address + offset + chunk = self._malloc_chunk_parser.parse_from_raw( + current_address, + raw_heap[offset:] + ) + offset += chunk.size + chunks.append(chunk) + + return Heap(heap_address, chunks) + + +class Heap: + """Class to represent a heap with some useful metadata. Heap is considered + a collection of chunks. + + Attributes: + address (int): The start address of the heap + chunks (list of MallocChunk): The list of chunks of the heap + top (MallocChunk): The Top chunk of the heap + """ + + def __init__(self, address, malloc_chunks): + self.address = address + self.chunks = malloc_chunks + + @property + def top(self): + return self.chunks[-1] + + +class HeapInfoParser: + """Class to parse the `heap_info` structure + + Args: + process_informer (ProcessInformer): Helper to perform operations over + memory and obtain info of the process + """ + + def __init__(self, process_informer): + self._process_informer = process_informer + self._pointer_size = process_informer.pointer_size + if self._pointer_size == 8: + pointer_type = Int64ul + else: + pointer_type = Int32ul + + self.heap_info_definition = Struct( + "ar_ptr"/ pointer_type, + "prev"/ pointer_type, + "size" / pointer_type, + "mprotect_size" / pointer_type + ) + + def parse_from_address(self, address): + raw_heap_info = self._process_informer.read_memory( + address, + self.heap_info_definition.sizeof() + ) + return self._parse_from_raw(raw_heap_info) + + def _parse_from_raw(self, raw): + heap_info_collection = self.heap_info_definition.parse(raw) + + return HeapInfo( + ar_ptr=heap_info_collection.ar_ptr, + prev=heap_info_collection.prev, + size=heap_info_collection.size, + mprotect_size=heap_info_collection.mprotect_size + ) + + +class HeapInfo: + """Class with the information of the `heap_info` structure. + + ```c + typedef struct _heap_info + { + mstate ar_ptr; /* Arena for this heap. */ + struct _heap_info *prev; /* Previous heap. */ + size_t size; /* Current size in bytes. */ + size_t mprotect_size; /* Size in bytes that has been mprotected + PROT_READ|PROT_WRITE. */ + /* Make sure the following data is properly aligned, particularly + that sizeof (heap_info) + 2 * SIZE_SZ is a multiple of + MALLOC_ALIGNMENT. */ + char pad[-6 * SIZE_SZ & MALLOC_ALIGN_MASK]; + } heap_info; + ``` + + Attributes: + ar_ptr (int): Address of the arena `malloc_state` structure. + prev (int): Address of the previous heap. + size (int): Size of the heap. + mprotect_size (int): Size of the heap which has benn mprotected with + PROT_READ|PROT_WRITE. + """ + + def __init__(self, ar_ptr, prev, size, mprotect_size): + self.ar_ptr = ar_ptr + self.prev = prev + self.size = size + self.mprotect_size = mprotect_size diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py new file mode 100644 index 000000000..c357771ed --- /dev/null +++ b/pwnlib/heap/heap_explorer.py @@ -0,0 +1,285 @@ +from .bins import * +from .arena import ArenaParser +from .malloc_state import MallocStateParser +from .heap import HeapParser +from .malloc_chunk import MallocChunkParser +from .process_informer import ProcessInformer + + +class HeapExplorer: + """Main class of the library. which functions to access to all items of the + glibc heap management, such as arenas, malloc_state, heap and bins. + """ + + def __init__(self, pid, libc): + process_informer = ProcessInformer(pid, libc) + self._process_informer = process_informer + self._main_arena_address = process_informer.main_arena_address + self._pointer_size = process_informer.pointer_size + + self._malloc_state_parser = MallocStateParser(process_informer) + + malloc_chunk_parser = MallocChunkParser(process_informer) + + self._heap_parser = HeapParser( + malloc_chunk_parser, + self._malloc_state_parser + ) + + self._bin_parser = BinParser(malloc_chunk_parser) + self._fast_bin_parser = FastBinParser(malloc_chunk_parser) + + self.tcaches_enabled = self._are_tcaches_enabled() + + if self.tcaches_enabled: + self._tcache_parser = EnabledTcacheParser( + malloc_chunk_parser, + self._heap_parser + ) + else: + self._tcache_parser = DisabledTcacheParser() + + self._arena_parser = ArenaParser( + self._malloc_state_parser, + self._heap_parser, + self._bin_parser, + self._fast_bin_parser, + self._tcache_parser + ) + + def _are_tcaches_enabled(self): + if self._process_informer.is_libc_version_lower_than((2, 26)): + return False + + tcache_chunk_size = self._pointer_size * 64 + 0x50 + return tcache_chunk_size == self.heap().chunks[0].size + + def arenas_count(self): + """Returns the number of arenas + + Returns: + int + """ + return len(self.all_arenas_malloc_states()) + + def malloc_state(self, arena_index=0): + """Returns the malloc_arena of the arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + MallocState + """ + return self.all_arenas_malloc_states()[arena_index] + + def all_arenas_malloc_states(self): + """Returns the malloc states of all arenas + + Returns: + list of MallocState + """ + return self._malloc_state_parser.parse_all_from_main_malloc_state_address( + self._main_arena_address + ) + + def heap(self, arena_index=0): + """Returns the heap of the arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + Heap + """ + malloc_state = self.malloc_state(arena_index) + return self._heap_parser.parse_from_malloc_state(malloc_state) + + def all_arenas_heaps(self): + """Returns the heaps of all arenas + + Returns: + list of Heap + """ + malloc_states = self.all_arenas_malloc_states() + heaps = [] + for malloc_state in malloc_states: + heaps.append( + self._heap_parser.parse_from_malloc_state(malloc_state) + ) + return heaps + + def unsorted_bin(self, arena_index=0): + """Returns the unsorted bin of the arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + UnsortedBin + """ + malloc_state = self.malloc_state(arena_index) + return self._bin_parser.parse_unsorted_bin_from_malloc_state( + malloc_state + ) + + def all_arenas_unsorted_bins(self): + """Returns the unsorted bins of all arenas + + Returns: + list of UnsortedBin + """ + unsorted_bins = [] + for malloc_state in self.all_arenas_malloc_states(): + unsorted_bins.append( + self._bin_parser.parse_unsorted_bin_from_malloc_state( + malloc_state + ) + ) + return unsorted_bins + + def small_bins(self, arena_index=0): + """Returns the small bins of the arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + list of SmallBin + """ + malloc_state = self.malloc_state(arena_index) + return self._bin_parser.parse_small_bins_from_malloc_state( + malloc_state, + ) + + def all_arenas_small_bins(self): + """Returns the small bins of all arenas + + Returns: + list of list of SmallBin + """ + all_small_bins = [] + for malloc_state in self.all_arenas_malloc_states(): + all_small_bins.append( + self._bin_parser.parse_small_bins_from_malloc_state( + malloc_state + ) + ) + return all_small_bins + + def large_bins(self, arena_index=0): + """Returns the large bins of the arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + list of LargeBin + """ + malloc_state = self.malloc_state(arena_index) + return self._bin_parser.parse_large_bins_from_malloc_state( + malloc_state, + ) + + def all_arenas_large_bins(self): + """Returns the large bins of all arenas + + Returns: + list of list of LargeBin + """ + all_large_bins = [] + for malloc_state in self.all_arenas_malloc_states(): + all_large_bins.append( + self._bin_parser.parse_large_bins_from_malloc_state( + malloc_state + ) + ) + return all_large_bins + + def fast_bins(self, arena_index=0): + """Returns the fast_bins of the arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + list of FastBin + """ + malloc_state = self.malloc_state(arena_index) + return self._fast_bin_parser.parse_all_from_malloc_state(malloc_state) + + def all_arenas_fast_bins(self): + """Returns the small bins of all arenas + + Returns: + list of list of FastBin + """ + malloc_states = self.all_arenas_malloc_states() + all_fast_bins = [] + for malloc_state in malloc_states: + all_fast_bins.append( + self._fast_bin_parser.parse_all_from_malloc_state(malloc_state) + ) + return all_fast_bins + + def tcaches(self, arena_index=0): + """Returns the tcaches of the arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + list of Tcache + """ + if not self.tcaches_enabled: + raise NoTcacheError() + + malloc_state = self.malloc_state(arena_index) + return self._tcache_parser.parse_all_from_malloc_state(malloc_state) + + def all_arenas_tcaches(self): + """Returns the tcaches of all arenas + + Returns: + list of list of Tcache + """ + if not self.tcaches_enabled: + raise NoTcacheError() + + malloc_states = self.all_arenas_malloc_states() + all_tcaches = [] + for malloc_state in malloc_states: + all_tcaches.append( + self._tcache_parser.parse_all_from_malloc_state(malloc_state) + ) + return all_tcaches + + def arena(self, arena_index=0): + """Returns the selected arena + + Args: + arena_index (int, optional): The index of the desired arena. If none + is specified, then the index of the main arena will be selected + + Returns: + Arena + """ + malloc_state = self.malloc_state(arena_index) + return self._arena_parser.parse_from_malloc_state(malloc_state) + + def all_arenas(self): + """Returns all arenas + + Returns: + list of Arena + """ + return self._arena_parser.parse_all_from_main_malloc_state_address( + self._main_arena_address + ) diff --git a/pwnlib/heap/malloc_chunk.py b/pwnlib/heap/malloc_chunk.py new file mode 100644 index 000000000..528a811f1 --- /dev/null +++ b/pwnlib/heap/malloc_chunk.py @@ -0,0 +1,151 @@ + +class MallocChunkParser: + """Class with the logic to parsing the malloc_chunk struct from binary + data. + + Attributes: + pid (int): Target process pid + pointer_size (int): Size of pointers in target process + unpack_pointer (func(bytes)): Function to get an int from the + pointer bytes + + Args: + process_informer (ProcessInformer): Helper to perform operations over + memory + """ + + def __init__(self, process_informer): + self.process_informer = process_informer + self.pid = process_informer.pid + self.pointer_size = process_informer.pointer_size + self.unpack_pointer = process_informer.unpack_pointer + + self._raw_chunk_size = self.pointer_size * 6 + + def parse_from_address(self, address): + raw_chunk = self.process_informer.read_memory( + address, + self._raw_chunk_size + ) + return self.parse_from_raw(address, raw_chunk) + + def parse_from_raw(self, address, raw_chunk): + + offset = 0 + previous_size = self.unpack_pointer( + raw_chunk[offset: offset + self.pointer_size] + ) + + offset += self.pointer_size + size_with_flags = self.unpack_pointer( + raw_chunk[offset: offset + self.pointer_size] + ) + + offset += self.pointer_size + fd = self.unpack_pointer( + raw_chunk[offset: offset + self.pointer_size] + ) + + offset += self.pointer_size + bk = self.unpack_pointer( + raw_chunk[offset: offset + self.pointer_size] + ) + + offset += self.pointer_size + fd_nextsize = self.unpack_pointer( + raw_chunk[offset: offset + self.pointer_size] + ) + + offset += self.pointer_size + bk_nextsize = self.unpack_pointer( + raw_chunk[offset: offset + self.pointer_size] + ) + + size, prev_in_use, mmapped, main_arena = self._parse_size_and_flags( + size_with_flags + ) + + return MallocChunk( + address, + previous_size, + size, + prev_in_use, + mmapped, + main_arena, + fd, + bk, + fd_nextsize, + bk_nextsize, + self.pointer_size + ) + + def _parse_size_and_flags(self, size_with_flags): + size = size_with_flags & ~0x7 + prev_in_use = bool(size_with_flags & 0x1) + mmapped = bool(size_with_flags & 0x2) + main_arena = bool(size_with_flags & 0x4) + + return size, prev_in_use, mmapped, main_arena + + +class MallocChunk: + """Class to represent the information contained in the malloc_chunk struct + of the glibc. + + ```c + struct malloc_chunk { + INTERNAL_SIZE_T mchunk_prev_size; + INTERNAL_SIZE_T mchunk_size; + struct malloc_chunk* fd; + struct malloc_chunk* bk; + struct malloc_chunk* fd_nextsize; + struct malloc_chunk* bk_nextsize; + }; + ``` + + Attributes: + address (int): The start address of the chunk + previous_size (int): Size of the previous chunk (if previous is free) + size (int): Size of the chunk + prev_in_use (bool): True if previous chunk is being used (not free) + mmapped (bool): True if chunk is allocated through mmap + non_main_arena (bool): True if chunk resides in the main arena + fd (int): Pointer to the next chunk of the bins (if chunk is free) + bk (int): Pointer to the previous chunk of the bins (if chunk is free) + fd_nextsize (int): Pointer to the next chunk with a larger size + (only used in large bins) + bk_nextsize (int): Pointer to the next chunk with an smaller size + (only used in large bins) + data_address (int): Address where starts the chunk user data + (the address returned by malloc) + size_with_flags (int): The raw size value of the chunk, which includes + the NON_MAIN_ARENA, MMAPPED and PREV_IN_USE flags in the + lowest-value bits + + """ + + def __init__(self, address, previous_size, size, prev_in_use, mmapped, + non_main_arena, fd, bk, fd_nextsize, bk_nextsize, pointer_size): + self.address = address + self.previous_size = previous_size + self.size = size + self.prev_in_use = prev_in_use + self.mmapped = mmapped + self.non_main_arena = non_main_arena + self.fd = fd + self.bk = bk + self.fd_nextsize = fd_nextsize + self.bk_nextsize = bk_nextsize + self.data_address = self.address + pointer_size * 2 + self.size_with_flags = size | int(non_main_arena)*4 | int(mmapped)*2 | int(prev_in_use) + + def __str__(self): + string = "" + string += "previous_size = {:#x}\n".format(self.previous_size) + string += "size = {:#x}\n".format(self.size_with_flags) + string += "fd = {:#x}\n".format(self.fd) + string += "bk = {:#x}\n".format(self.bk) + string += "fd_nextsize = {:#x}\n".format(self.fd_nextsize) + string += "bk_nextsize = {:#x}\n".format(self.bk_nextsize) + + return string diff --git a/pwnlib/heap/malloc_state/__init__.py b/pwnlib/heap/malloc_state/__init__.py new file mode 100644 index 000000000..594a4d803 --- /dev/null +++ b/pwnlib/heap/malloc_state/__init__.py @@ -0,0 +1,4 @@ + +from .malloc_state import * +from .fastbinsy import * +from .bins import * diff --git a/pwnlib/heap/malloc_state/bins/__init__.py b/pwnlib/heap/malloc_state/bins/__init__.py new file mode 100644 index 000000000..3b079e143 --- /dev/null +++ b/pwnlib/heap/malloc_state/bins/__init__.py @@ -0,0 +1,4 @@ + +from .bins import Bins +from .parser import BinsParser +from .bins_indexes import * diff --git a/pwnlib/heap/malloc_state/bins/bins.py b/pwnlib/heap/malloc_state/bins/bins.py new file mode 100644 index 000000000..3f27558bc --- /dev/null +++ b/pwnlib/heap/malloc_state/bins/bins.py @@ -0,0 +1,56 @@ +from .bins_indexes import * + + +class Bins: + """Class to represent the `bins` attribute of malloc_state struct + + Attributes: + entries (list of BinEntry): pointers to the first chunks of the each + double linked bin. + """ + + def __init__(self, entries): + self.entries = entries + + @property + def unsorted_bin_entry(self): + return self.entries[UNSORTED_BIN_INDEX] + + @property + def small_bins_entries(self): + return self.entries[SMALL_BINS_START_INDEX:LARGE_BINS_START_INDEX] + + @property + def large_bins_entries(self): + return self.entries[LARGE_BINS_START_INDEX:] + + @property + def base_address(self): + return self.address(0) + + def address(self, index): + return self.entries[index].address + + def fd(self, index): + return self.entries[index].fd + + def bk(self, index): + return self.entries[index].bk + + def __getitem__(self, index): + return self.entries[index] + + def __iter__(self): + return iter(self.entries) + + def __len__(self): + return len(self.entries) + + def __str__(self): + string = "" + i = 1 + for bin_entry in self.entries: + string += "{} {}\n".format(i, bin_entry) + i += 1 + + return string diff --git a/pwnlib/heap/malloc_state/bins/bins_indexes.py b/pwnlib/heap/malloc_state/bins/bins_indexes.py new file mode 100644 index 000000000..e51d9a796 --- /dev/null +++ b/pwnlib/heap/malloc_state/bins/bins_indexes.py @@ -0,0 +1,3 @@ +UNSORTED_BIN_INDEX = 0 +SMALL_BINS_START_INDEX = 1 +LARGE_BINS_START_INDEX = 63 diff --git a/pwnlib/heap/malloc_state/bins/parser.py b/pwnlib/heap/malloc_state/bins/parser.py new file mode 100644 index 000000000..105b96d9e --- /dev/null +++ b/pwnlib/heap/malloc_state/bins/parser.py @@ -0,0 +1,201 @@ + +from heap_explorer.utils import * +from .bins import Bins +from heap_explorer.bins import * +from .bins_indexes import * + + +class BinsParser: + """Class with the logic to parse the `bins` attribute of the + `malloc_state` struct. + + Args: + pointer_size (int): The pointer size in bytes of the process. + """ + + def __init__(self, pointer_size): + self._pointer_size = pointer_size + if pointer_size == 8: + self._largebin_index_to_min_size = largebin64_index_to_min_size + else: + self._largebin_index_to_min_size = largebin32_index_to_min_size + + def parse_from_collection(self, base_address, collection_array): + """Returns a FastBinsY object by parsing a `bins` binary array. + + Args: + collection_array (bytes): Binary `bins` array of `malloc_state` struct. + + Returns: + Bins + """ + + num_entries = len(collection_array) + entries = [] + + for i in range(0, num_entries, 2): + fd = collection_array[i] + bk = collection_array[i + 1] + address = base_address + i * self._pointer_size + + index = int(i / 2) + entry = self._to_bin_entry(index, address, fd, bk) + entries.append(entry) + + return Bins(entries) + + def _to_bin_entry(self, index, address, fd, bk): + if index < SMALL_BINS_START_INDEX: + return UnsortedBinEntry(address, fd, bk) + elif index < LARGE_BINS_START_INDEX: + chunks_size = self._bin_index_to_size(index) + return SmallBinEntry(address, fd, bk, chunks_size) + else: + min_chunks_size = self._bin_index_to_size(index) + return LargeBinEntry(address, fd, bk, min_chunks_size) + + def _bin_index_to_size(self, index): + if index < SMALL_BINS_START_INDEX: + return 0 + elif index < LARGE_BINS_START_INDEX: + return (self._pointer_size * 4) + (index - 1) * (self._pointer_size * 2) + elif index < 126: + return self._largebin_index_to_min_size[index+1] + else: + return 0x100000 + + +largebin32_index_to_min_size = { + 64: 0x200, + 65: 0x240, + 66: 0x280, + 67: 0x2c0, + 68: 0x300, + 69: 0x340, + 70: 0x380, + 71: 0x3c0, + 72: 0x400, + 73: 0x440, + 74: 0x480, + 75: 0x4c0, + 76: 0x500, + 77: 0x540, + 78: 0x580, + 79: 0x5c0, + 80: 0x600, + 81: 0x640, + 82: 0x680, + 83: 0x6c0, + 84: 0x700, + 85: 0x740, + 86: 0x780, + 87: 0x7c0, + 88: 0x800, + 89: 0x840, + 90: 0x880, + 91: 0x8c0, + 92: 0x900, + 93: 0x940, + 94: 0x980, + 95: 0x9c0, + 96: 0xa00, + 97: 0xc00, + 98: 0xe00, + 99: 0x1000, + 100: 0x1200, + 101: 0x1400, + 102: 0x1600, + 103: 0x1800, + 104: 0x1a00, + 105: 0x1c00, + 106: 0x1e00, + 107: 0x2000, + 108: 0x2200, + 109: 0x2400, + 110: 0x2600, + 111: 0x2800, + 112: 0x2a00, + 113: 0x3000, + 114: 0x4000, + 115: 0x5000, + 116: 0x6000, + 117: 0x7000, + 118: 0x8000, + 119: 0x9000, + 120: 0xa000, + 121: 0x10000, + 122: 0x18000, + 123: 0x20000, + 124: 0x28000, + 125: 0x40000, + 126: 0x80000 +} + + +largebin64_index_to_min_size = { + 64: 0x400, + 65: 0x440, + 66: 0x480, + 67: 0x4c0, + 68: 0x500, + 69: 0x540, + 70: 0x580, + 71: 0x5c0, + 72: 0x600, + 73: 0x640, + 74: 0x680, + 75: 0x6c0, + 76: 0x700, + 77: 0x740, + 78: 0x780, + 79: 0x7c0, + 80: 0x800, + 81: 0x840, + 82: 0x880, + 83: 0x8c0, + 84: 0x900, + 85: 0x940, + 86: 0x980, + 87: 0x9c0, + 88: 0xa00, + 89: 0xa40, + 90: 0xa80, + 91: 0xac0, + 92: 0xb00, + 93: 0xb40, + 94: 0xb80, + 95: 0xbc0, + 96: 0xc00, + 97: 0xc40, + 98: 0xe00, + 99: 0x1000, + 100: 0x1200, + 101: 0x1400, + 102: 0x1600, + 103: 0x1800, + 104: 0x1a00, + 105: 0x1c00, + 106: 0x1e00, + 107: 0x2000, + 108: 0x2200, + 109: 0x2400, + 110: 0x2600, + 111: 0x2800, + 112: 0x2a00, + 113: 0x3000, + 114: 0x4000, + 115: 0x5000, + 116: 0x6000, + 117: 0x7000, + 118: 0x8000, + 119: 0x9000, + 120: 0xa000, + 121: 0x10000, + 122: 0x18000, + 123: 0x20000, + 124: 0x28000, + 125: 0x40000, + 126: 0x80000, +} + + diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/malloc_state/fastbinsy.py new file mode 100644 index 000000000..f4966b1c2 --- /dev/null +++ b/pwnlib/heap/malloc_state/fastbinsy.py @@ -0,0 +1,81 @@ +from heap_explorer.utils import * +from heap_explorer.bins.fast_bin import FastBinEntry + + +class FastBinsYParser: + """Class with the logic to parse the `fastbinsY` attribute of the + `malloc_state` struct. + + Args: + pointer_size (int): The pointer size in bytes of the process. + """ + + def __init__(self, pointer_size): + self._pointer_size = pointer_size + if pointer_size == 8: + self._u = u64 + else: + self._u = u32 + + def parse_from_collection(self, base_address, collection_array): + """Returns a FastBinsY object by parsing a `fastbinsY` binary array. + + Args: + collection_array (bytes): Binary `fastbinsY` array of `malloc_state` struct. + + Returns: + FastBinsY + """ + + base_size = self._pointer_size * 4 + entries = [] + for i, fd in enumerate(collection_array): + address = base_address + i * self._pointer_size + chunks_size = base_size + i * self._pointer_size * 2 + entries.append(FastBinEntry(address, fd, chunks_size)) + + return FastBinsY(entries) + + +class FastBinsY: + """Class to represent the `fastbinsY` attribute of malloc_state struct. + + Attributes: + entries (list of FastBinEntry): pointers to the first chunks of the each + fast bin. + """ + + def __init__(self, entries): + self.entries = entries + + def base_address(self): + return self.entries[0].address + + def address(self, index): + return self.entries[index].address + + def fd(self, index): + return self.entries[index].fd + + def __getitem__(self, index): + return self.entries[index] + + def __iter__(self): + return iter(self.entries) + + def __len__(self): + return len(self.entries) + + def __str__(self): + string = "" + + i = 1 + for fast_bin_entry in self.entries: + string += "{} Fastbin [{:#x}] => {:#x}\n".format( + i, + fast_bin_entry.chunks_size, + fast_bin_entry.fd + ) + i += 1 + + return string diff --git a/pwnlib/heap/malloc_state/malloc_state/__init__.py b/pwnlib/heap/malloc_state/malloc_state/__init__.py new file mode 100644 index 000000000..846561996 --- /dev/null +++ b/pwnlib/heap/malloc_state/malloc_state/__init__.py @@ -0,0 +1,3 @@ + +from .malloc_state import * +from .parser import * diff --git a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py new file mode 100644 index 000000000..2ce25b9ba --- /dev/null +++ b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py @@ -0,0 +1,101 @@ + + +class MallocState: + """ + Representation of the glibc struct malloc_state + + ```c + struct malloc_state + { + __libc_lock_define (, mutex); + int flags; + int have_fastchunks; + mfastbinptr fastbinsY[NFASTBINS]; + mchunkptr top; + mchunkptr last_remainder; + mchunkptr bins[NBINS * 2 - 2]; + unsigned int binmap[BINMAPSIZE]; + struct malloc_state *next; + struct malloc_state *next_free; + INTERNAL_SIZE_T attached_threads; + INTERNAL_SIZE_T system_mem; + INTERNAL_SIZE_T max_system_mem; + }; + ``` + + Notes: + The field have_fastchunks was introduced in glibc version 2.27. In that + case, in this class that field value will be None. + + Attributes: + mutex (int): + flags (int): + have_fastchunks (int or None): + fastbinsY (FastBinsY): + top (int): + last_remainder (int): + bins (Bins): + binmap (list[4] of int): + next (int): + next_free (int): + attached_threads (int): + system_mem (int): + max_system_mem (int): + """ + + def __init__(self, address, mutex, flags, have_fastchunks, + fastbinsY, top, last_remainder, bins, binmap, next_, + next_free, attached_threads, system_mem, max_system_mem): + self.address = address + self.mutex = mutex + self.flags = flags + self.have_fastchunks = have_fastchunks + self.fastbinsY = fastbinsY + self.top = top + self.last_remainder = last_remainder + self.bins = bins + self.binmap = binmap + self.next = next_ + self.next_free = next_free + self.attached_threads = attached_threads + self.system_mem = system_mem + self.max_system_mem = max_system_mem + + @property + def unsorted_bin(self): + return self.bins.unsorted_bin_entry + + @property + def small_bins(self): + return self.bins.small_bins_entries + + @property + def large_bins(self): + return self.bins.large_bins_entries + + def __str__(self): + string = "mutex = {:#x}\n".format(self.mutex) + string += "flags = {:#x}\n".format(self.flags) + + if self.have_fastchunks is not None: + string += "have_fastchunks = {:#x}\n".format(self.have_fastchunks) + + string += str(self.fastbinsY) + + string += "top = {:#x}\n".format(self.top) + string += "last_remainder = {:#x}\n".format(self.last_remainder) + string += str(self.bins) + + string += "binmap = [{:#x}, {:#x}, {:#x}, {:#x}]\n".format( + self.binmap[0], + self.binmap[1], + self.binmap[2], + self.binmap[3] + ) + string += "next = {:#x}\n".format(self.next) + string += "next_free = {:#x}\n".format(self.next_free) + string += "attached_threads = {:#x}\n".format(self.attached_threads) + string += "system_mem = {:#x}\n".format(self.system_mem) + string += "max_system_mem = {:#x}\n".format(self.max_system_mem) + + return string diff --git a/pwnlib/heap/malloc_state/malloc_state/parser.py b/pwnlib/heap/malloc_state/malloc_state/parser.py new file mode 100644 index 000000000..cc2332c19 --- /dev/null +++ b/pwnlib/heap/malloc_state/malloc_state/parser.py @@ -0,0 +1,259 @@ +from heap_explorer.malloc_state.bins import * +from heap_explorer.malloc_state.fastbinsy import * +from construct import * +from .malloc_state import MallocState + +NFASTBINS = 10 +NBINS = 128 +INT_SIZE = 4 +BINMAPSIZE = 4 + +class MallocStateParser: + """Class with the logic of parsing the malloc_state struct from binary + data. Handles special cases which depends on the glibc version. + + Args: + process_informer (ProcessInformer): Helper to perform operations over + memory + """ + + def __init__(self, process_informer): + self._process_informer = process_informer + self._pointer_size = process_informer.pointer_size + + self._bins_parser = BinsParser(self._pointer_size) + self._fastbinsy_parser = FastBinsYParser(self._pointer_size) + + self._libc_version = self._process_informer.libc_version + + self._malloc_state_struct_definition = MallocStateStructSelector( + self._process_informer.libc_version, + process_informer.pointer_size + ).select_malloc_state_struct_definition() + + self.raw_malloc_state_size = self._calculate_raw_malloc_state_size() + + + + def parse_all_from_main_malloc_state_address(self, base_address): + """Parses the whole list of malloc_state structs from the + process memory, by following the `next` pointer in the struct + + Returns: + list of MallocState + """ + malloc_state_address = base_address + addresses = [] + malloc_states = [] + while malloc_state_address not in addresses: + addresses.append(malloc_state_address) + malloc_state = self.parse_from_address(malloc_state_address) + malloc_states.append(malloc_state) + malloc_state_address = malloc_state.next + + return malloc_states + + def parse_from_address(self, address): + """Parses a malloc_state struct from the process memory + + Returns: + MallocState + """ + raw_malloc_state = self._process_informer.read_memory( + address, + self.raw_malloc_state_size + ) + return self.parse_from_raw(address, raw_malloc_state) + + def parse_from_raw(self, address, raw_malloc_state): + """Parses a binary malloc_state struct + + Args: + address (int): address of the data, useful as metadata for bins arrays + raw_malloc_state (bytearray): malloc_state in binary form + + Returns: + MallocState + """ + malloc_state_collection = self._malloc_state_struct_definition.parse( + raw_malloc_state + ) + + mutex = malloc_state_collection.mutex + flags = malloc_state_collection.flags + try: + have_fastchunks = malloc_state_collection.have_fastchunks + except AttributeError: + have_fastchunks = None + + fastbinsY_address = address + \ + self._malloc_state_struct_definition.fastbinsY_offset + fastbinsY = self._fastbinsy_parser.parse_from_collection( + fastbinsY_address, + malloc_state_collection.fastbinsY + ) + + top = malloc_state_collection.top + last_remainder = malloc_state_collection.last_remainder + + bins_address = address + \ + self._malloc_state_struct_definition.bins_offset + bins = self._bins_parser.parse_from_collection( + bins_address, + malloc_state_collection.bins + ) + + binmap = list(malloc_state_collection.binmap) + next_ = malloc_state_collection.next + next_free = malloc_state_collection.next_free + try: + attached_threads = malloc_state_collection.attached_threads + except AttributeError: + attached_threads = None + + system_mem = malloc_state_collection.system_mem + max_system_mem = malloc_state_collection.max_system_mem + + return MallocState( + address, + mutex, + flags, + have_fastchunks, + fastbinsY, + top, + last_remainder, + bins, + binmap, + next_, + next_free, + attached_threads, + system_mem, + max_system_mem + ) + + def _calculate_raw_malloc_state_size(self): + return self._malloc_state_struct_definition.size + + +class MallocStateStructSelector: + + def __init__(self, libc_version, pointer_size): + self._pointer_size = pointer_size + if pointer_size == 8: + self._pointer_type = Int64ul + else: + self._pointer_type = Int32ul + + self._libc_version = libc_version + + def select_malloc_state_struct_definition(self): + if self._libc_version >= (2, 27): + return self._define_malloc_state_struct_27() + elif self._libc_version >= (2, 23): + return self._define_malloc_state_struct_23() + else: + return self._define_malloc_state_struct_19() + + def _define_malloc_state_struct_27(self): + pointer_type = self._pointer_type + if self._pointer_size == 8: + padding_bytes = 0 + else: + padding_bytes = 4 + + fastbinsY_offset = pointer_type.sizeof() + Int32ul.sizeof()*2 + bins_offset = fastbinsY_offset + pointer_type.sizeof()*NFASTBINS \ + + padding_bytes + pointer_type.sizeof()*2 + + struct_definition = Struct( + "mutex" / pointer_type, + "flags" / Int32ul, + "have_fastchunks" / Int32ul, + "fastbinsY" / pointer_type[NFASTBINS], + Padding(padding_bytes), + "top" / pointer_type, + "last_remainder" / pointer_type, + "bins" / pointer_type[NBINS * 2 - 2], + "binmap" / Int32ul[BINMAPSIZE], + "next" / pointer_type, + "next_free" / pointer_type, + "attached_threads" / pointer_type, + "system_mem" / pointer_type, + "max_system_mem" / pointer_type + ) + + return MallocStateStructDefinition( + struct_definition, + fastbinsY_offset, + bins_offset + ) + + def _define_malloc_state_struct_23(self): + pointer_type = self._pointer_type + + fastbinsY_offset = Int32ul.sizeof()*2 + bins_offset = fastbinsY_offset + pointer_type.sizeof() * NFASTBINS \ + + pointer_type.sizeof()*2 + + struct_definition = Struct( + "mutex" / Int32ul, + "flags" / Int32ul, + "fastbinsY" / pointer_type[NFASTBINS], + "top" / pointer_type, + "last_remainder" / pointer_type, + "bins" / pointer_type[NBINS * 2 - 2], + "binmap" / Int32ul[BINMAPSIZE], + "next" / pointer_type, + "next_free" / pointer_type, + "attached_threads" / pointer_type, + "system_mem" / pointer_type, + "max_system_mem" / pointer_type + ) + + return MallocStateStructDefinition( + struct_definition, + fastbinsY_offset, + bins_offset + ) + + def _define_malloc_state_struct_19(self): + pointer_type = self._pointer_type + + fastbinsY_offset = Int32ul.sizeof()*2 + bins_offset = fastbinsY_offset + pointer_type.sizeof() * NFASTBINS \ + + pointer_type.sizeof()*2 + + struct_definition = Struct( + "mutex" / Int32ul, + "flags" / Int32ul, + "fastbinsY" / pointer_type[NFASTBINS], + "top" / pointer_type, + "last_remainder" / pointer_type, + "bins" / pointer_type[NBINS * 2 - 2], + "binmap" / Int32ul[BINMAPSIZE], + "next" / pointer_type, + "next_free" / pointer_type, + "system_mem" / pointer_type, + "max_system_mem" / pointer_type + ) + + return MallocStateStructDefinition( + struct_definition, + fastbinsY_offset, + bins_offset + ) + + +class MallocStateStructDefinition(object): + + def __init__(self, struct_definition, fastbinsY_offset, bins_offset): + self.struct_definition = struct_definition + self.fastbinsY_offset = fastbinsY_offset + self.bins_offset = bins_offset + + def parse(self, raw): + return self.struct_definition.parse(raw) + + @property + def size(self): + return self.struct_definition.sizeof() diff --git a/pwnlib/heap/memory_maps.py b/pwnlib/heap/memory_maps.py new file mode 100644 index 000000000..2fc86bbb8 --- /dev/null +++ b/pwnlib/heap/memory_maps.py @@ -0,0 +1,301 @@ + +class MemoryMapFlags: + """Object with the information of the flags field of maps described in /proc//maps + + Arguments: + readable(bool): True if map is readable + writable(bool): True if map is writable + executable(bool): True if map can be executed + private(bool): True if map is not shared + + Example: + + >>> m = MemoryMapFlags.from_str('rw-p') + >>> m.readable + True + >>> m.writable + True + >>> m.executable + False + >>> m.private + True + >>> m.shared + False + >>> str(m) + 'rw-p' + """ + + def __init__(self, readable, writable, executable, private): + self.readable = readable + self.writable = writable + self.executable = executable + self.private = private + + @property + def shared(self): + return not self.private + + @classmethod + def from_str(cls, flags_str): + """Generates a MemoryMapFlags object from a flags string. Example: 'r-xp' + + Arguments: + flags_str(str): Flag string with the format contained in /proc/pid/maps + + Returns: + MemoryMapFlags: The object representation of the string + + Example: + + >>> str(MemoryMapFlags.from_str('r-xp')) + 'r-xp' + """ + readable = flags_str[0] == "r" + writable = flags_str[1] == "w" + executable = flags_str[2] == "x" + private = flags_str[3] == "p" + return cls(readable, writable, executable, private) + + def __str__(self): + flags_str = "" + flags_str += "r" if self.readable else "-" + flags_str += "w" if self.writable else "-" + flags_str += "x" if self.executable else "-" + flags_str += "p" if self.private else "s" + return flags_str + + +class MemoryMap: + """Object with the information of the memory maps described in /proc//maps + + Arguments: + start_address(int): The starting address of the map + end_address(int): The ending address of the map + flags(MemoryMapFlags): The flags (read, write, exec, private, shared) of the map + offset(int): Offset of file mapped. 0 if no file + device_major(int): Device major version. 0 if no file + device_minor(int): Device minor version. 0 if no file + inode(int): Inode of the mapped file. 0 if no file + path(str): Path of the mapped file. Empty string if no file + + Example: + + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> hex(m.start_address) + '0x55db09b78000' + >>> hex(m.end_address) + '0x55db09b81000' + >>> m.readable + True + >>> m.writable + True + >>> m.executable + False + >>> m.private + True + >>> m.shared + False + >>> hex(m.offset) + '0x114000' + >>> hex(m.device_major) + '0xfe' + >>> hex(m.device_minor) + '0x1' + >>> m.inode + 9832010 + >>> m.path + '/usr/bins/bash' + >>> str(m) + '55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010\\t\\t/usr/bins/bash' + """ + + def __init__(self, start_address, end_address, flags, offset, device_major, device_minor, inode, path): + self.start_address = start_address + self.end_address = end_address + self.flags = flags + self.offset = offset + self.device_major = device_major + self.device_minor = device_minor + self.inode = inode + self.path = path + + @property + def address(self): + return self.start_address + + @property + def size(self): + """The size of the map""" + return self.end_address - self.start_address + + @property + def readable(self): + return self.flags.readable + + @property + def writable(self): + return self.flags.writable + + @property + def executable(self): + return self.flags.executable + + @property + def private(self): + return self.flags.private + + @property + def shared(self): + return self.flags.shared + + def is_in_range(self, address): + """Indicates if the specified addr is in the range of the map + + Arguments: + address (int): Memory address + + Returns: + bool: True if addr is in the map memory range + + Example: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> m.is_in_range(0x55db09b78000) + True + >>> m.is_in_range(0x55db09b81000) + False + >>> >>> m.is_in_range(0x55db09b8200) + True + """ + return self.start_address <= address < self.end_address + + @classmethod + def from_str(cls, map_str): + parts = map_str.split() + + start_address, end_address = parts[0].split("-") + start_address = int(start_address, 16) + end_address = int(end_address, 16) + + flags = MemoryMapFlags.from_str(parts[1]) + + offset = int(parts[2], 16) + + device_major, device_minor = parts[3].split(":") + device_major = int(device_major, 16) + device_minor = int(device_minor, 16) + + inode = int(parts[4]) + + try: + path = parts[5] + except IndexError: + path = "" + + return cls(start_address, end_address, flags, offset, device_major, device_minor, inode, path) + + def __str__(self): + map_str = "" + map_str += "%x-%x" % (self.start_address, self.end_address) + map_str += " %s" % self.flags + map_str += " %08x" % self.offset + map_str += " %02x:%02x" % (self.device_major, self.device_minor) + map_str += " %d" % self.inode + + if self.path: + map_str += "\t\t%s" % self.path + + return map_str + + +class MemoryMaps: + """List of the memory maps described in /proc//maps + + Arguments: + maps(list of MemoryMap): The memory maps + + Example: + + >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /home/zrt/test + ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test + ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test + ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] + ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 + ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 + ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] + ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] + ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] + ... \""") + >>> str(maps.heap) + '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' + >>> str(maps.stack) + '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' + >>> len(maps) + 22 + """ + + def __init__(self, maps): + self.maps = maps + + @classmethod + def from_process(cls, pid): + with open('/proc/%s/maps' % pid) as fmap: + maps_raw = fmap.read() + + return cls.from_str(maps_raw) + + @classmethod + def from_str(cls, maps_string): + maps = [MemoryMap.from_str(line) for line in maps_string.splitlines()] + return cls(maps) + + def map_with_address(self, address): + """Returns the map which contains the given address + + Arguments: + address (int): Memory addr + + Returns: + MemoryMap or None: Returns MemoryMap in case some map contains + the address, None otherwise + """ + for map_ in self.maps: + if map_.is_in_range(address): + return map_ + return None + + @property + def heap(self): + for map_ in self.maps: + if map_.path == "[heap]": + return map_ + + @property + def stack(self): + for map_ in self.maps: + if map_.path == "[stack]": + return map_ + + def __str__(self): + return "\n".join([str(map_) for map_ in self.maps]) + + def __len__(self): + return len(self.maps) + + def __getitem__(self, index): + return self.maps[index] + + def __iter__(self): + return iter(self.maps) diff --git a/pwnlib/heap/printer/__init__.py b/pwnlib/heap/printer/__init__.py new file mode 100644 index 000000000..8b6b1ddbd --- /dev/null +++ b/pwnlib/heap/printer/__init__.py @@ -0,0 +1,2 @@ + +from .printer import * diff --git a/pwnlib/heap/printer/formatter.py b/pwnlib/heap/printer/formatter.py new file mode 100644 index 000000000..d218208f9 --- /dev/null +++ b/pwnlib/heap/printer/formatter.py @@ -0,0 +1,253 @@ +from heap_explorer.bins import * +from heap_explorer.malloc_state import * + + +class MallocChunkFormatter: + + def __init__(self, pointer_size): + if pointer_size == 8: + self._p = p64 + else: + self._p = p32 + + def format_chunk_flags_as_str(self, chunk): + flags = [] + if chunk.non_main_arena: + flags.append("NON_MAIN_ARENA") + if chunk.mmapped: + flags.append("MMAPPED") + if chunk.prev_in_use: + flags.append("PREV_IN_USE") + + return "|".join(flags) + + def format_chunk_first_bytes_as_hexdump_str(self, chunk): + msg = "" + raw_bytes = bytearray(self._p(chunk.fd)) + raw_bytes += bytearray(self._p(chunk.bk)) + + for byte in raw_bytes: + msg += "{:02x} ".format(byte) + + msg += " " + + for byte in raw_bytes: + msg += chr(byte) if 0x20 <= byte < 0x7F else "." + + return msg + + +class BinFormatter: + + def __init__(self, pointer_size): + self._malloc_chunk_formatter = MallocChunkFormatter(pointer_size) + + def format_bins_summary(self, bins, start_index=0): + bins_str = [] + for i, bin_ in enumerate(bins): + if len(bin_) > 0: + bins_str.append( + " [{}] {:#x} ({})".format( + start_index + i, bin_.chunks_size, len(bin_)) + ) + + if bins_str: + return "\n".join(bins_str) + else: + return " [-] No chunks found" + + def format_bins(self, bins, start_index=0, print_all=True): + bins_str = [] + for i, bin_ in enumerate(bins): + if print_all or len(bin_) > 0: + bins_str.append("[{}] {}".format( + i + start_index, self._format_bin_as_str(bin_)) + ) + + if bins_str: + return "\n".join(bins_str) + else: + return " [-] No chunks found" + + def _format_bin_as_str(self, bin_): + msg = self._format_bin_name_as_str(bin_) + + if not isinstance(bin_, UnsortedBin): + msg += " {:#x}".format(bin_.chunks_size) + + msg += " ({})".format(len(bin_.malloc_chunks)) + + next_address = bin_.fd + for chunk in bin_.malloc_chunks: + flags = self._malloc_chunk_formatter.format_chunk_flags_as_str(chunk) + msg += " => Chunk({:#x} {:#x}".format(next_address, chunk.size) + if flags: + msg += " {}".format(flags) + msg += ")" + next_address = chunk.fd + + msg += " => {:#x}".format(next_address) + return msg + + def _format_bin_name_as_str(self, bin_): + if isinstance(bin_, FastBin): + return "Fastbin" + elif isinstance(bin_, UnsortedBin): + return "Unsorted bins" + elif isinstance(bin_, SmallBin): + return "Smallbin" + elif isinstance(bin_, LargeBin): + return "Largebin" + elif isinstance(bin_, Tcache): + return "Tcache" + else: + raise TypeError() + + +class HeapFormatter: + + def __init__(self, pointer_size): + self._malloc_chunk_formatter = MallocChunkFormatter(pointer_size) + + def format_heap(self, heap): + chunks_str = [self._format_heap_chunk_as_str(chunk) for chunk in heap.chunks] + return "\n".join(chunks_str) + + def _format_heap_chunk_as_str(self, chunk): + msg = "" + flags = self._malloc_chunk_formatter.format_chunk_flags_as_str(chunk) + + msg += "{:#x} {:#x} {}".format(chunk.address, chunk.size, flags) + msg += "\n" + msg += " " + self._malloc_chunk_formatter.format_chunk_first_bytes_as_hexdump_str(chunk) + + return msg + + +class MallocStateFormatter: + + def format_malloc_state(self, malloc_state): + string = "" + string += "mutex = {:#x}\n".format(malloc_state.mutex) + string += "flags = {:#x}\n".format(malloc_state.flags) + + if malloc_state.have_fastchunks is not None: + string += "have_fastchunks = {:#x}\n".format(malloc_state.have_fastchunks) + + string += self._format_malloc_state_fastbinsY_as_str(malloc_state.fastbinsY) + + string += "top = {:#x}\n".format(malloc_state.top) + string += "last_remainder = {:#x}\n".format(malloc_state.last_remainder) + string += self._format_malloc_state_bins_as_str(malloc_state.bins) + + string += "binmap = [{:#x}, {:#x}, {:#x}, {:#x}]\n".format( + malloc_state.binmap[0], + malloc_state.binmap[1], + malloc_state.binmap[2], + malloc_state.binmap[3] + ) + string += "next = {:#x}\n".format(malloc_state.next) + string += "next_free = {:#x}\n".format(malloc_state.next_free) + + if malloc_state.attached_threads is not None: + string += "attached_threads = {:#x}\n".format( + malloc_state.attached_threads + ) + string += "system_mem = {:#x}\n".format(malloc_state.system_mem) + string += "max_system_mem = {:#x}".format(malloc_state.max_system_mem) + + return string + + def _format_malloc_state_fastbinsY_as_str(self, fastbinsY): + string = "fastbinsY\n" + for i, entry in enumerate(fastbinsY): + string += " [{}] {:#x} => {:#x}\n".format( + i, entry.chunks_size, entry.fd) + + return string + + def _format_malloc_state_bins_as_str(self, bins): + string = "bins\n" + index = 0 + + string += " Unsorted bins\n" + unsorted_entry = bins.unsorted_bin_entry + string += " [{}] fd={:#x} bk={:#x}\n".format( + index, unsorted_entry.fd, unsorted_entry.bk) + + index += 1 + string += " Small bins\n" + for small_entry in bins.small_bins_entries: + string += " [{}] {:#x} fd={:#x} bk={:#x}\n".format( + index, small_entry.chunks_size, small_entry.fd, small_entry.bk) + index += 1 + + string += " Large bins\n" + for small_entry in bins.large_bins_entries: + string += " [{}] {:#x} fd={:#x} bk={:#x}\n".format( + index, small_entry.chunks_size, small_entry.fd, small_entry.bk) + index += 1 + + return string + + +class ArenaFormatter: + + def __init__(self, pointer_size): + self._bins_formatter = BinFormatter(pointer_size) + + def format_arena_summary(self, arena): + msg = "" + + malloc_state = arena.malloc_state + msg += "- Malloc State ({:#x})\n".format(malloc_state.address) + msg += " top = {:#x}\n".format(malloc_state.top) + msg += " last_remainder = {:#x}\n".format(malloc_state.last_remainder) + msg += " next = {:#x}\n".format(malloc_state.next) + msg += " next_free = {:#x}\n".format(malloc_state.next_free) + msg += " system_mem = {:#x}\n".format(malloc_state.system_mem) + + heap = arena.heap + msg += "- Heap ({:#x})\n".format(heap.address) + msg += " chunks_count = {:#x}\n".format(len(heap.chunks)) + msg += " top: addr = {:#x}, size = {:#x}\n".format(heap.top.address, heap.top.size) + + try: + tcaches = arena.tcaches + msg += "- Tcaches\n" + msg += "{}\n".format( + self._bins_formatter.format_bins_summary(tcaches) + ) + except NoTcacheError: + pass + + msg += "- Fast bins\n" + msg += "{}\n".format( + self._bins_formatter.format_bins_summary(arena.fast_bins) + ) + + msg += "- Unsorted bins\n" + if len(arena.unsorted_bin) > 0: + msg += " [0] ({})\n".format(len(arena.unsorted_bin)) + else: + msg += " [-] No chunks found\n" + + msg += "- Small bins\n" + msg += "{}\n".format( + self._bins_formatter.format_bins_summary( + arena.small_bins, + start_index=SMALL_BINS_START_INDEX + ) + ) + + msg += "- Large bins\n" + msg += "{}".format( + self._bins_formatter.format_bins_summary( + arena.large_bins, + start_index=LARGE_BINS_START_INDEX + ) + ) + + return msg + + diff --git a/pwnlib/heap/printer/printer.py b/pwnlib/heap/printer/printer.py new file mode 100644 index 000000000..a97c58c24 --- /dev/null +++ b/pwnlib/heap/printer/printer.py @@ -0,0 +1,130 @@ +from heap_explorer.malloc_state import * +from .formatter import * + +import shutil + + +def get_terminal_width(): + try: + return shutil.get_terminal_size().columns + except AttributeError: + import os + _, columns = os.popen('stty size', 'r').read().split() + return columns + + +class BinPrinter: + + _MAXIMUM_WIDTH = 80 + + def __init__(self, pointer_size): + self.width = self._MAXIMUM_WIDTH + term_width = get_terminal_width() + + if term_width < self.width: + self.width = term_width + + self.title_surrounded_symbol = "=" + self._pointer_size = pointer_size + + self._heap_formatter = HeapFormatter(pointer_size) + self._bin_formatter = BinFormatter(pointer_size) + self._malloc_state_formatter = MallocStateFormatter() + self._arena_formatter = ArenaFormatter(pointer_size) + + def print_arena(self, arena): + self._print_super_title("Arena") + self.print_malloc_state(arena.malloc_state) + self.print_heap(arena.heap) + self.print_all_bins_types(arena) + self._print_super_close() + + def print_arena_summary(self, arena): + self._print_title("Arena") + print(self._arena_formatter.format_arena_summary(arena)) + self._print_close() + + def print_malloc_state(self, malloc_state): + self._print_title("Malloc State ({:#x})".format(malloc_state.address)) + print(self._malloc_state_formatter.format_malloc_state(malloc_state)) + self._print_close() + + def print_heap(self, heap): + self._print_title("Heap ({:#x})".format(heap.address)) + print(self._heap_formatter.format_heap(heap)) + self._print_close() + + def print_all_bins_types(self, arena, print_all=False): + try: + self.print_tcaches(arena.tcaches, print_all) + except NoTcacheError: + pass + + self.print_fast_bins(arena.fast_bins, print_all) + self.print_unsorted_bin(arena.unsorted_bin, print_all) + self.print_small_bins(arena.small_bins, print_all) + self.print_large_bins(arena.large_bins, print_all) + + def print_tcaches(self, tcaches, print_all=False): + return self._print_bins(tcaches, "Tcaches", print_all) + + def print_fast_bins(self, fast_bins, print_all=False): + return self._print_bins( + fast_bins, + "Fast bins", + print_all, + ) + + def print_unsorted_bin(self, unsorted_bin, print_all=False): + return self._print_bins( + [unsorted_bin], + "Unsorted bins", + print_all, + start_index=UNSORTED_BIN_INDEX + ) + + def print_small_bins(self, small_bins, print_all=False): + return self._print_bins( + small_bins, + "Small bins", + print_all, + start_index=SMALL_BINS_START_INDEX + ) + + def print_large_bins(self, large_bins, print_all=False): + return self._print_bins( + large_bins, + "Large bins", + print_all, + start_index=LARGE_BINS_START_INDEX + ) + + def _print_bins(self, bins, title, print_all=False, start_index=0): + self._print_title(title) + print(self._bin_formatter.format_bins(bins, start_index, print_all)) + self._print_close() + + def _print_title(self, title): + print(self._format_title(title)) + + def _format_title(self, title, separator="="): + side_len = self._calc_side_len(title) + side = separator * side_len + return "{} {} {}".format(side, title, side) + + def _format_super_title(self, title): + msg = "{}\n".format(self._format_title(title, separator="+")) + msg += "+" * self.width + return msg + + def _print_super_title(self, title): + print(self._format_super_title(title)) + + def _calc_side_len(self, title): + return int((self.width - len(title) - 2) / 2) + + def _print_close(self): + print("=" * self.width) + + def _print_super_close(self): + print("+" * self.width) diff --git a/pwnlib/heap/process_informer.py b/pwnlib/heap/process_informer.py new file mode 100644 index 000000000..2fc9b0c5d --- /dev/null +++ b/pwnlib/heap/process_informer.py @@ -0,0 +1,47 @@ +from .utils import * +from .memory_maps import MemoryMaps +import os.path + + +class ProcessInformer: + """Helper class with information about process memory such as pointer_size, + and which allows perform operations over memory. + + Attributes: + libc_version (tuple(int, int)): The glibc version in + format (major, minor) + pid (int): pid of the process + pointer_size (int): size in bytes of a pointer in the process + main_arena_address (int): address of the main arena malloc state + + """ + + def __init__(self, pid, libc): + libc_name = os.path.basename(libc.path) + self.libc_version = get_libc_version_from_name(libc_name) + self.pid = pid + + if "64" in libc.get_machine_arch(): + self.pointer_size = 8 + self.unpack_pointer = u64 + else: + self.pointer_size = 4 + self.unpack_pointer = u32 + + self.unpack_int = u32 + + self.main_arena_address = get_main_arena_addr(libc, self.pointer_size) + + def read_memory(self, address, size): + with open('/proc/%s/mem' % self.pid, 'rb') as mem: + mem.seek(address) + return mem.read(size) + + def maps(self): + return MemoryMaps.from_process(self.pid) + + def is_libc_version_higher_than(self, version): + return self.libc_version > version + + def is_libc_version_lower_than(self, version): + return self.libc_version < version diff --git a/pwnlib/heap/utils.py b/pwnlib/heap/utils.py new file mode 100644 index 000000000..2a4ac5c2f --- /dev/null +++ b/pwnlib/heap/utils.py @@ -0,0 +1,45 @@ +import re +import pwn + + +def u32(bytes_): + return pwn.u32(bytes_) + + +def u64(bytes_): + return pwn.u64(bytes_) + + +def p32(number): + return pwn.p32(number) + + +def p64(number): + return pwn.p64(number) + + +def read_memory(pid, address, size): + with open('/proc/%s/mem' % pid, 'rb') as mem: + mem.seek(address) + return mem.read(size) + + +def write_memory(pid, address, buffer): + with open('/proc/%s/mem' % pid, 'wb') as mem: + mem.seek(address) + return mem.write(buffer) + + +def align_address(address, align): + """Align the address to the given size.""" + return address + ((align - (address % align)) % align) + + +def get_libc_version_from_name(name): + libc_version = tuple(int(_) for _ in re.search(r"libc6?[-_](\d+)\.(\d+)\.so", name).groups()) + return libc_version + + +def get_main_arena_addr(libc, pointer_size): + malloc_hook_addr = libc.symbols["__malloc_hook"] + return align_address(malloc_hook_addr + pointer_size, 0x20) # only for x86, for arm is other technique From f558916cb53fe530dfafc99258cbbd8583525a72 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Mon, 27 Jan 2020 20:43:13 +0100 Subject: [PATCH 007/179] added method to process to return the heap explorer --- pwnlib/heap/__init__.py | 1 + pwnlib/tubes/process.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index e69de29bb..38ed2670c 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -0,0 +1 @@ +from .heap_explorer import HeapExplorer diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 1a868d0d1..6c280e8cd 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -28,6 +28,8 @@ from pwnlib.util.misc import which import pwnlib.util.proc +from pwnlib.heap import HeapExplorer + log = getLogger(__name__) class PTY(object): pass @@ -922,14 +924,23 @@ def libc(self): ELF('/lib64/libc-...so') >>> p.close() """ + e = self._libc() + e.checksec() + return e + + def _libc(self): from pwnlib.elf import ELF for lib, address in self.libs().items(): if 'libc.so' in lib or 'libc-' in lib: - e = ELF(lib) + e = ELF(lib, checksec=False) e.address = address return e + @property + def heap_explorer(self): + return HeapExplorer(self.pid, self._libc()) + @property def elf(self): """elf() -> pwnlib.elf.elf.ELF From 56dc29039c48c5a517f9ae62443d94509f65e5a0 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Mon, 27 Jan 2020 20:44:09 +0100 Subject: [PATCH 008/179] added construct dependency --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6b1163a56..e3de73eb2 100644 --- a/setup.py +++ b/setup.py @@ -60,7 +60,8 @@ 'psutil>=3.3.0', 'intervaltree>=3.0', 'sortedcontainers', - 'unicorn'] + 'unicorn', + 'construct'] # Check that the user has installed the Python development headers PythonH = os.path.join(get_python_inc(), 'Python.h') From 66775af8ab54e12605f357a7299851a727c2f9fb Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Mon, 27 Jan 2020 21:08:32 +0100 Subject: [PATCH 009/179] resolved heap import problems --- pwn/toplevel.py | 1 + pwnlib/__init__.py | 1 + pwnlib/heap/malloc_state/bins/parser.py | 4 ++-- pwnlib/heap/malloc_state/fastbinsy.py | 4 ++-- pwnlib/heap/malloc_state/malloc_state/parser.py | 4 ++-- pwnlib/heap/utils.py | 10 +++++----- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/pwn/toplevel.py b/pwn/toplevel.py index adbcb7319..61cb7a1ca 100644 --- a/pwn/toplevel.py +++ b/pwn/toplevel.py @@ -65,6 +65,7 @@ from pwnlib.util.sh_string import sh_string, sh_prepare, sh_command_with from pwnlib.util.splash import * from pwnlib.util.web import * +from pwnlib.heap import * # Promote these modules, so that "from pwn import *" will let you access them diff --git a/pwnlib/__init__.py b/pwnlib/__init__.py index 4f261d240..f99dcf4fc 100644 --- a/pwnlib/__init__.py +++ b/pwnlib/__init__.py @@ -37,6 +37,7 @@ 'util', 'adb', 'update', + 'heap' ] for module in __all__: diff --git a/pwnlib/heap/malloc_state/bins/parser.py b/pwnlib/heap/malloc_state/bins/parser.py index 105b96d9e..e13e05c9f 100644 --- a/pwnlib/heap/malloc_state/bins/parser.py +++ b/pwnlib/heap/malloc_state/bins/parser.py @@ -1,7 +1,7 @@ -from heap_explorer.utils import * +from pwnlib.heap.utils import * from .bins import Bins -from heap_explorer.bins import * +from pwnlib.heap.bins import * from .bins_indexes import * diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/malloc_state/fastbinsy.py index f4966b1c2..d439360f0 100644 --- a/pwnlib/heap/malloc_state/fastbinsy.py +++ b/pwnlib/heap/malloc_state/fastbinsy.py @@ -1,5 +1,5 @@ -from heap_explorer.utils import * -from heap_explorer.bins.fast_bin import FastBinEntry +from pwnlib.heap.utils import * +from pwnlib.heap.bins.fast_bin import FastBinEntry class FastBinsYParser: diff --git a/pwnlib/heap/malloc_state/malloc_state/parser.py b/pwnlib/heap/malloc_state/malloc_state/parser.py index cc2332c19..13a01ce24 100644 --- a/pwnlib/heap/malloc_state/malloc_state/parser.py +++ b/pwnlib/heap/malloc_state/malloc_state/parser.py @@ -1,5 +1,5 @@ -from heap_explorer.malloc_state.bins import * -from heap_explorer.malloc_state.fastbinsy import * +from pwnlib.heap.malloc_state.bins import * +from pwnlib.heap.malloc_state.fastbinsy import * from construct import * from .malloc_state import MallocState diff --git a/pwnlib/heap/utils.py b/pwnlib/heap/utils.py index 2a4ac5c2f..d67cfd154 100644 --- a/pwnlib/heap/utils.py +++ b/pwnlib/heap/utils.py @@ -1,21 +1,21 @@ import re -import pwn +from pwnlib.util import packing def u32(bytes_): - return pwn.u32(bytes_) + return packing.u32(bytes_) def u64(bytes_): - return pwn.u64(bytes_) + return packing.u64(bytes_) def p32(number): - return pwn.p32(number) + return packing.p32(number) def p64(number): - return pwn.p64(number) + return packing.p64(number) def read_memory(pid, address, size): From 354622861feeff0082f1947e3d9e5fdc12b5d6c4 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Wed, 29 Jan 2020 21:10:22 +0100 Subject: [PATCH 010/179] added __str__ methods to heap items --- .gitignore | 1 + pwnlib/heap/__init__.py | 1 + pwnlib/heap/arena.py | 103 -- pwnlib/heap/basic_formatter.py | 42 + pwnlib/heap/bins/bin.py | 95 ++ pwnlib/heap/bins/bin_factory.py | 21 - pwnlib/heap/bins/bin_parser.py | 28 +- pwnlib/heap/bins/fast_bin.py | 13 +- pwnlib/heap/bins/large_bin.py | 11 +- pwnlib/heap/bins/small_bin.py | 11 +- pwnlib/heap/bins/tcache.py | 222 ---- pwnlib/heap/bins/unsorted_bin.py | 14 +- pwnlib/heap/gdb.py | 1009 ----------------- pwnlib/heap/heap.py | 188 --- pwnlib/heap/malloc_chunk.py | 42 + pwnlib/heap/malloc_state/bins/parser.py | 4 +- .../malloc_state/malloc_state/malloc_state.py | 83 ++ pwnlib/heap/printer/__init__.py | 2 - pwnlib/heap/printer/formatter.py | 253 ----- pwnlib/heap/printer/printer.py | 130 --- 20 files changed, 334 insertions(+), 1939 deletions(-) delete mode 100644 pwnlib/heap/arena.py create mode 100644 pwnlib/heap/basic_formatter.py delete mode 100644 pwnlib/heap/bins/bin_factory.py delete mode 100644 pwnlib/heap/bins/tcache.py delete mode 100644 pwnlib/heap/gdb.py delete mode 100644 pwnlib/heap/heap.py delete mode 100644 pwnlib/heap/printer/__init__.py delete mode 100644 pwnlib/heap/printer/formatter.py delete mode 100644 pwnlib/heap/printer/printer.py diff --git a/.gitignore b/.gitignore index 529d61829..9ff2c8190 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ venv *.egg-info *.core .coverage +.idea diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 38ed2670c..28e066d80 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -1 +1,2 @@ + from .heap_explorer import HeapExplorer diff --git a/pwnlib/heap/arena.py b/pwnlib/heap/arena.py deleted file mode 100644 index 01c4b8ecc..000000000 --- a/pwnlib/heap/arena.py +++ /dev/null @@ -1,103 +0,0 @@ -from .bins import NoTcacheError - - -class ArenaParser: - """Class to parse the arena items and retrieve Arena objects - - Args: - malloc_state_parser (MallocStateParser) - heap_parser (HeapParser) - bin_parser (BinParser) - fast_bin_parser (FastBinParser) - tcache_parser (TcacheParser) - """ - - def __init__(self, malloc_state_parser, heap_parser, bin_parser, - fast_bin_parser, tcache_parser): - self._malloc_state_parser = malloc_state_parser - self._heap_parser = heap_parser - self._bin_parser = bin_parser - self._fast_bin_parser = fast_bin_parser - self._tcache_parser = tcache_parser - - def parse_all_from_main_malloc_state_address(self, main_malloc_state_address): - """Returns all the arenas of the process from the address of the - main arena malloc state - - Args: - main_malloc_state_address(int): The address of the main arena - malloc state - - Returns: - list of Arena - """ - - malloc_states = self._malloc_state_parser.parse_all_from_main_malloc_state_address( - main_malloc_state_address - ) - return [self.parse_from_malloc_state(malloc_state) for malloc_state in malloc_states] - - def parse_from_malloc_state(self, malloc_state): - """Returns all the arena information based on the malloc state. - - Args: - malloc_state (MallocState) - - Returns: - Arena - """ - heap = self._heap_parser.parse_from_malloc_state(malloc_state) - unsorted_bin = self._bin_parser.parse_unsorted_bin_from_malloc_state( - malloc_state - ) - small_bins = self._bin_parser.parse_small_bins_from_malloc_state( - malloc_state - ) - large_bins = self._bin_parser.parse_large_bins_from_malloc_state( - malloc_state - ) - fast_bins = self._fast_bin_parser.parse_all_from_malloc_state( - malloc_state - ) - tcaches = self._tcache_parser.parse_all_from_malloc_state(malloc_state) - - return Arena( - malloc_state, - heap, - unsorted_bin, - small_bins, - large_bins, - fast_bins, - tcaches - ) - - -class Arena(object): - """Class with the information of the arena - - Attributes: - malloc_state (MallocState) - heap (Heap) - tcaches (list of Tcaches) - fast_bins (list of FastBin) - unsorted_bin (UnsortedBin) - small_bins (list of SmallBin) - large_bins (list of LargeBin) - """ - - def __init__(self, malloc_state, heap, unsorted_bin, - small_bins, large_bins, fast_bins, tcaches): - self.malloc_state = malloc_state - self.heap = heap - self._tcaches = tcaches - self.fast_bins = fast_bins - self.unsorted_bin = unsorted_bin - self.small_bins = small_bins - self.large_bins = large_bins - - @property - def tcaches(self): - if self._tcaches is None: - raise NoTcacheError() - - return self._tcaches diff --git a/pwnlib/heap/basic_formatter.py b/pwnlib/heap/basic_formatter.py new file mode 100644 index 000000000..8dda5ef30 --- /dev/null +++ b/pwnlib/heap/basic_formatter.py @@ -0,0 +1,42 @@ +import shutil + + +def get_terminal_width(): + try: + return shutil.get_terminal_size().columns + except AttributeError: + import os + _, columns = os.popen('stty size', 'r').read().split() + return columns + + +class BasicFormatter(object): + _MAXIMUM_WIDTH = 80 + + def __init__(self): + self.width = self._MAXIMUM_WIDTH + term_width = get_terminal_width() + + if term_width < self.width: + self.width = term_width + + self.title_surrounded_symbol = "=" + + def super_header(self, title): + msg = "{}\n".format(self.header(title, separator="+")) + msg += "+" * self.width + return msg + + def header(self, title, separator="="): + side_len = self._calc_side_len(title) + side = separator * side_len + return "{} {} {}".format(side, title, side) + + def _calc_side_len(self, title): + return int((self.width - len(title) - 2) / 2) + + def footer(self): + return "=" * self.width + + def super_footer(self): + return "+" * self.width diff --git a/pwnlib/heap/bins/bin.py b/pwnlib/heap/bins/bin.py index 386578d08..a6b6e3ac7 100644 --- a/pwnlib/heap/bins/bin.py +++ b/pwnlib/heap/bins/bin.py @@ -1,3 +1,73 @@ +from pwnlib.heap.basic_formatter import BasicFormatter + + +class Bins(object): + """Base class to be inherit by the bins collections. This class provides + the methods to access the bins array as well as standard implementation + of the __str__ method. + + Attributes: + bins (list of Bin): The bins of the collection. + """ + + def __init__(self, bins): + self._bins = bins + self._basic_formatter = BasicFormatter() + + @property + def bins(self): + return self._bins + + def __getitem__(self, item): + return self._bins[item] + + def __len__(self): + return len(self._bins) + + def __iter__(self): + return iter(self._bins) + + def __str__(self): + msg = [ + self._basic_formatter.header(self._name()), + self._format_bins(self._start_index()), + self._basic_formatter.footer() + ] + return "\n".join(msg) + + def _name(self): + return self.__class__.__name__ + + def _start_index(self): + return 0 + + def _format_bins(self, start_index=0): + bins_str = [] + for i, bin_ in enumerate(self.bins): + if len(bin_) > 0: + bins_str.append("[{}] {}".format( + i + start_index, bin_) + ) + + if bins_str: + return "\n".join(bins_str) + else: + return " [-] No chunks found" + + def summary(self, start_index=0): + bins_str = [] + for i, bin_ in enumerate(self.bins): + if len(bin_) > 0: + bins_str.append( + " [{}] {:#x} ({})".format( + start_index + i, bin_.chunks_size, len(bin_)) + ) + + if bins_str: + return "\n".join(bins_str) + else: + return " [-] No chunks found" + class Bin(object): """Base class to be inherit by the bins. This class provides the basic info @@ -47,6 +117,31 @@ def __len__(self): def __iter__(self): return iter(self.malloc_chunks) + def __str__(self): + msg = [self._name()] + + if self.chunks_size != 0: + msg.append(" {:#x}".format(self.chunks_size)) + + msg.append(" ({})".format(len(self.malloc_chunks))) + + next_address = self.fd + for chunk in self.malloc_chunks: + flags = chunk.format_flags_as_str() + msg.append( + " => Chunk({:#x} {:#x}".format(next_address, chunk.size) + ) + if flags: + msg.append(" {}".format(flags)) + msg.append(")") + next_address = chunk.fd + + msg.append(" => {:#x}".format(next_address)) + return "".join(msg) + + def _name(self): + return self.__class__.__name__ + class BinEntry(object): """Class to contain the common information of each bin entry. diff --git a/pwnlib/heap/bins/bin_factory.py b/pwnlib/heap/bins/bin_factory.py deleted file mode 100644 index 4b1d82a7e..000000000 --- a/pwnlib/heap/bins/bin_factory.py +++ /dev/null @@ -1,21 +0,0 @@ -from .small_bin import * -from .large_bin import * -from .unsorted_bin import * - - -class BinFactory: - """Helper class to create different bin classes based on the type of entry - provided. - """ - - @staticmethod - def create(bin_entry, chunks): - - if isinstance(bin_entry, LargeBinEntry): - return LargeBin(bin_entry, chunks) - elif isinstance(bin_entry, SmallBinEntry): - return SmallBin(bin_entry, chunks) - elif isinstance(bin_entry, UnsortedBinEntry): - return UnsortedBin(bin_entry, chunks) - - raise TypeError() diff --git a/pwnlib/heap/bins/bin_parser.py b/pwnlib/heap/bins/bin_parser.py index 39a7bf06e..8d516f4b1 100644 --- a/pwnlib/heap/bins/bin_parser.py +++ b/pwnlib/heap/bins/bin_parser.py @@ -1,4 +1,6 @@ -from .bin_factory import BinFactory +from .small_bin import * +from .large_bin import * +from .unsorted_bin import * class BinParser: @@ -26,7 +28,9 @@ def parse_unsorted_bin_from_malloc_state(self, malloc_state): Returns: UnsortedBin """ - return self._parse_from_bin_entry(malloc_state.unsorted_bin) + return UnsortedBins( + self._parse_from_bin_entry(malloc_state.unsorted_bin) + ) def parse_small_bins_from_malloc_state(self, malloc_state): """Returns the small bins of the arena based on the malloc state @@ -43,7 +47,7 @@ def parse_small_bins_from_malloc_state(self, malloc_state): small_bins.append( self._parse_from_bin_entry(small_entry) ) - return small_bins + return SmallBins(small_bins) def parse_large_bins_from_malloc_state(self, malloc_state): """Returns the small bins of the arena based on the malloc state @@ -60,7 +64,7 @@ def parse_large_bins_from_malloc_state(self, malloc_state): large_bins.append( self._parse_from_bin_entry(large_entry) ) - return large_bins + return LargeBins(large_bins) def _parse_from_bin_entry(self, bin_entry): chunks = [] @@ -82,3 +86,19 @@ def _parse_from_bin_entry(self, bin_entry): return BinFactory.create(bin_entry, chunks) +class BinFactory: + """Helper class to create different bin classes based on the type of entry + provided. + """ + + @staticmethod + def create(bin_entry, chunks): + + if isinstance(bin_entry, LargeBinEntry): + return LargeBin(bin_entry, chunks) + elif isinstance(bin_entry, SmallBinEntry): + return SmallBin(bin_entry, chunks) + elif isinstance(bin_entry, UnsortedBinEntry): + return UnsortedBin(bin_entry, chunks) + + raise TypeError() diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index f26255fd8..ae0ed8a69 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -27,7 +27,7 @@ def parse_all_from_malloc_state(self, malloc_state): for bin_entry in malloc_state.fastbinsY: fast_bin = self._parse_from_fast_bin_entry(bin_entry) fast_bins.append(fast_bin) - return fast_bins + return FastBins(fast_bins) def _parse_from_fast_bin_entry(self, fast_bin_entry): chunks = [] @@ -48,6 +48,12 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): return FastBin(fast_bin_entry, chunks) +class FastBins(Bins): + + def _name(self): + return "Fast Bins" + + class FastBin(Bin): """Class to represent a fast bin of the glibc. """ @@ -55,7 +61,7 @@ class FastBin(Bin): def __init__(self, bin_entry, malloc_chunks): super(FastBin, self).__init__(bin_entry, malloc_chunks) - def __str__(self): + def __repr__(self): msg = "Fastbin [size = {:#x}, count = {}] => {:#x}".format( self.chunks_size, len(self), @@ -67,6 +73,9 @@ def __str__(self): return msg + def _name(self): + return "Fast Bin" + class FastBinEntry(BinEntry): """Class to contain the information of a entry in `fastbinsY` attribute diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/bins/large_bin.py index 6dd05a659..ddbae031e 100644 --- a/pwnlib/heap/bins/large_bin.py +++ b/pwnlib/heap/bins/large_bin.py @@ -1,6 +1,12 @@ from .bin import * +class LargeBins(Bins): + + def _name(self): + return "Large Bins" + + class LargeBin(Bin): """Class to represent an large bin of the glibc """ @@ -12,7 +18,7 @@ def __init__(self, bin_entry, malloc_chunks): def min_chunks_size(self): return self.chunks_size - def __str__(self): + def __repr__(self): msg = "Largebin [min_size = {:#x}, count = {}] => {:#x}".format( self.min_chunks_size, @@ -25,6 +31,9 @@ def __str__(self): return msg + def _name(self): + return "Large Bin" + class LargeBinEntry(BinEntry): """Class to contain the information of a large bin entry in `bins` of diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/bins/small_bin.py index e8df443b6..2f578a03e 100644 --- a/pwnlib/heap/bins/small_bin.py +++ b/pwnlib/heap/bins/small_bin.py @@ -1,6 +1,12 @@ from .bin import * +class SmallBins(Bins): + + def _name(self): + return "Small Bins" + + class SmallBin(Bin): """Class to represent an small bin of the glibc """ @@ -8,7 +14,7 @@ class SmallBin(Bin): def __init__(self, bin_entry, malloc_chunks): super(SmallBin, self).__init__(bin_entry, malloc_chunks) - def __str__(self): + def __repr__(self): msg = "Smallbin [size = {:#x}, count = {}] => {:#x}".format( self.chunks_size, @@ -21,6 +27,9 @@ def __str__(self): return msg + def _name(self): + return "Small Bin" + class SmallBinEntry(BinEntry): """Class to contain the information of a small bin entry in `bins` of diff --git a/pwnlib/heap/bins/tcache.py b/pwnlib/heap/bins/tcache.py deleted file mode 100644 index adb6db9f1..000000000 --- a/pwnlib/heap/bins/tcache.py +++ /dev/null @@ -1,222 +0,0 @@ -from .bin import * - - -class NoTcacheError(Exception): - """Exception raised when tries to access to tcache in glibc when those are - disabled. - """ - - def __init__(self, message="Tcache are not available in the current glibc"): - super(NoTcacheError, self).__init__(message) - - -class TcachePerthreadStructParser: - """Class with the logic to parsing the tcache_perthread_struct struct - from binary data. - - - Args: - process_informer (ProcessInformer): Helper to perform operations over - memory - - """ - TCACHE_MAX_BINS = 64 - - def __init__(self, process_informer): - self._process_informer = process_informer - self._pointer_size = process_informer.pointer_size - self._unpack_pointer = process_informer.unpack_pointer - self._tcache_perthread_struct_size = self.TCACHE_MAX_BINS + \ - self._pointer_size * \ - self.TCACHE_MAX_BINS - - def parse_from_address(self, address): - """Returns a TcachePerthreadStruct object by parsing the - `tcache_perthread_struct` struct at the given address. - - Args: - address (int): Address of the `tcache_perthread_struct`. - - Returns: - TcachePerthreadStruct - """ - raw_tcache_perthread_struct = self._process_informer.read_memory( - address, - self._tcache_perthread_struct_size - ) - - return self._parse_from_raw(address, raw_tcache_perthread_struct) - - def _parse_from_raw(self, address, raw_tcache_perthread_struct): - counts = [] - for i in range(self.TCACHE_MAX_BINS): - count = raw_tcache_perthread_struct[i] - counts.append(count) - - entries = [] - for i in range(self.TCACHE_MAX_BINS): - index = self.TCACHE_MAX_BINS + i * self._pointer_size - current_address = address + index - fd = self._unpack_pointer( - raw_tcache_perthread_struct[index:index+self._pointer_size] - ) - tcache_chunks_size = self._pointer_size * 3 + i * self._pointer_size * 2 - entries.append( - TcacheEntry(current_address, fd, tcache_chunks_size) - ) - - return TcachePerthreadStruct(address, counts, entries) - - -class TcachePerthreadStruct: - """Class to contain the information of tcache_perthread_struct struct. - - typedef struct tcache_perthread_struct - { - char counts[TCACHE_MAX_BINS]; - tcache_entry *entries[TCACHE_MAX_BINS]; - } tcache_perthread_struct; - - Attributes: - counts (list of int): List with indicative counts of chunks of each - tcache - entries (list of TcacheEntry): One entrie per tcache, - which indicates the address of the first chunk in the bin - - """ - TCACHE_MAX_BINS = 64 - - def __init__(self, address, counts, entries): - self.address = address - self.counts = counts - self.entries = entries - - def __str__(self): - string = "" - for i in range(self.TCACHE_MAX_BINS): - string += "{} [{}] {:#x}\n".format( - i, - self.counts[i], - self.entries[i] - ) - return string - - -class TcacheParser: - """Abstract class that defines the public methods of a Tcache - """ - - def parse_all_from_malloc_state(self, malloc_state): - raise NotImplemented() - - -class DisabledTcacheParser: - """Class to use when tcaches are disabled - """ - - def parse_all_from_malloc_state(self, malloc_state): - """Fake method that always returns None - """ - return None - - -class EnabledTcacheParser: - """Class with the logic to parse the chunks of a tcache from raw memory - and create Tcache objects. - - Args: - malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the - heap. - heap_parser (HeapParser): a parser of the heap metadata and chunks. - """ - - def __init__(self, malloc_chunk_parser, heap_parser): - self._process_informer = malloc_chunk_parser.process_informer - self._pointer_size = malloc_chunk_parser.pointer_size - self._malloc_chunk_parser = malloc_chunk_parser - self._tcache_perthread_parser = TcachePerthreadStructParser( - malloc_chunk_parser.process_informer - ) - self._heap_parser = heap_parser - - def are_tcache_enabled(self): - return True - - def parse_all_from_malloc_state(self, malloc_state): - """Returns the tcaches of the arena based on the malloc state - information. - - Args: - malloc_state (MallocState) - - Returns: - list of Tcache - """ - heap_address, _ = self._heap_parser.calculate_heap_address_and_size_from_malloc_state(malloc_state) - return self._parse_all_from_heap_address(heap_address) - - def _parse_all_from_heap_address(self, heap_address): - tcache_perthread_struct_address = heap_address + 0x10 - tcache_perthread = self._tcache_perthread_parser.parse_from_address( - tcache_perthread_struct_address - ) - - tcaches = [] - for entry in tcache_perthread.entries: - tcache = self._parse_from_tcache_entry(entry) - tcaches.append(tcache) - return tcaches - - def _parse_from_tcache_entry(self, entry): - pointer = entry.fd - addresses = [entry.address] - chunks = [] - while pointer != 0x0 and pointer not in addresses: - addresses.append(pointer) - try: - chunk_base_address = pointer - self._pointer_size*2 - chunk = self._malloc_chunk_parser.parse_from_address( - chunk_base_address - ) - chunks.append(chunk) - pointer = chunk.fd - except OSError: - # to avoid hanging in case some pointer is corrupted - break - - return Tcache(entry, chunks) - - -class Tcache(Bin): - """Class to represent a tcache of the glibc - - Attributes: - bin_entry (TcacheEntry): The entry of tcache_perthread_struct for the - bin. - chunks (list of MallocChunk): The chunks which are inserted in - the tcache. - """ - - def __init__(self, bin_entry, malloc_chunks): - super(Tcache, self).__init__(bin_entry, malloc_chunks) - - def __str__(self): - msg = "Tcache [size = {:#x}, count = {}] => {:#x}".format( - self.chunks_size, - len(self), - self.fd - ) - - for chunk in self.chunks: - msg += chunk.to_bin_str() - - return msg - - -class TcacheEntry(BinEntry): - """Class to contain the information of each entry in - tcache_perthread_struct struct. - """ - - def __init__(self, address, fd, chunks_size): - super(TcacheEntry, self).__init__(address, fd, chunks_size=chunks_size) diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py index e449a89f8..cd55e4112 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -1,6 +1,15 @@ from .bin import * +class UnsortedBins(Bins): + + def __init__(self, bin): + super(UnsortedBins, self).__init__([bin]) + + def _name(self): + return "Unsorted Bins" + + class UnsortedBin(Bin): """Class to represent an unsorted bin of the glibc """ @@ -8,7 +17,7 @@ class UnsortedBin(Bin): def __init__(self, bin_entry, malloc_chunks): super(UnsortedBin, self).__init__(bin_entry, malloc_chunks) - def __str__(self): + def __repr__(self): msg = "Unsorted bins [count = {}] => {:#x}".format( len(self), @@ -20,6 +29,9 @@ def __str__(self): return msg + def _name(self): + return "Unsorted Bin" + class UnsortedBinEntry(BinEntry): """Class to contain the information of a unsorted bin entry in `bins` of diff --git a/pwnlib/heap/gdb.py b/pwnlib/heap/gdb.py deleted file mode 100644 index b299b5d75..000000000 --- a/pwnlib/heap/gdb.py +++ /dev/null @@ -1,1009 +0,0 @@ -# -*- coding: utf-8 -*- -""" -During exploit development, it is frequently useful to debug the -target binary under GDB. - -Pwntools makes this easy-to-do with a handful of helper routines, designed -to make your exploit-debug-update cycles much faster. - -Useful Functions ----------------- - -- :func:`attach` - Attach to an existing process -- :func:`debug` - Start a new process under a debugger, stopped at the first instruction -- :func:`debug_shellcode` - Build a binary with the provided shellcode, and start it under a debugger - -Debugging Tips --------------- - -The :func:`attach` and :func:`debug` functions will likely be your bread and -butter for debugging. - -Both allow you to provide a script to pass to GDB when it is started, so that -it can automatically set your breakpoints. - -Attaching to Processes -~~~~~~~~~~~~~~~~~~~~~~ - -To attach to an existing process, just use :func:`attach`. It is surprisingly -versatile, and can attach to a :class:`.process` for simple -binaries, or will automatically find the correct process to attach to for a -forking server, if given a :class:`.remote` object. - -Spawning New Processes -~~~~~~~~~~~~~~~~~~~~~~ - -Attaching to processes with :func:`attach` is useful, but the state the process -is in may vary. If you need to attach to a process very early, and debug it from -the very first instruction (or even the start of ``main``), you instead should use -:func:`debug`. - -When you use :func:`debug`, the return value is a :class:`.tube` object -that you interact with exactly like normal. - -Tips and Troubleshooting ------------------------- - -``NOPTRACE`` magic argument -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -It's quite cumbersom to comment and un-comment lines containing `attach`. - -You can cause these lines to be a no-op by running your script with the -``NOPTRACE`` argument appended, or with ``PWNLIB_NOPTRACE=1`` in the environment. - -:: - - $ python exploit.py NOPTRACE - [+] Starting local process '/bin/bash': Done - [!] Skipping debug attach since context.noptrace==True - ... - -Kernel Yama ptrace_scope -~~~~~~~~~~~~~~~~~~~~~~~~ - -The Linux kernel v3.4 introduced a security mechanism called ``ptrace_scope``, -which is intended to prevent processes from debugging eachother unless there is -a direct parent-child relationship. - -This causes some issues with the normal Pwntools workflow, since the process -heirarchy looks like this: - -:: - - python ---> target - `--> gdb - -Note that ``python`` is the parent of ``target``, not ``gdb``. - -In order to avoid this being a problem, Pwntools uses the function -``prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY)``. This disables Yama -for any processes launched by Pwntools via :class:`.process` or via -:meth:`.ssh.process`. - -Older versions of Pwntools did not perform the ``prctl`` step, and -required that the Yama security feature was disabled systemwide, which -requires ``root`` access. - -Member Documentation -=============================== -""" -from __future__ import absolute_import -from __future__ import division - -import os -import random -import re -import shlex -import six -import tempfile -import time - -from pwnlib import adb -from pwnlib import atexit -from pwnlib import elf -from pwnlib import qemu -from pwnlib import tubes -from pwnlib.asm import _bfdname -from pwnlib.asm import make_elf -from pwnlib.asm import make_elf_from_assembly -from pwnlib.context import LocalContext -from pwnlib.context import context -from pwnlib.log import getLogger -from pwnlib.util import misc -from pwnlib.util import proc - -log = getLogger(__name__) - -@LocalContext -def debug_assembly(asm, gdbscript=None, vma=None): - r"""debug_assembly(asm, gdbscript=None, vma=None) -> tube - - Creates an ELF file, and launches it under a debugger. - - This is identical to debug_shellcode, except that - any defined symbols are available in GDB, and it - saves you the explicit call to asm(). - - Arguments: - asm(str): Assembly code to debug - gdbscript(str): Script to run in GDB - vma(int): Base address to load the shellcode at - \**kwargs: Override any :obj:`pwnlib.context.context` values. - - Returns: - :class:`.process` - - Example: - - >>> assembly = shellcraft.echo("Hello world!\n") - >>> io = gdb.debug_assembly(assembly) - >>> io.recvline() - b'Hello world!\n' - """ - tmp_elf = make_elf_from_assembly(asm, vma=vma, extract=False) - os.chmod(tmp_elf, 0o777) - - atexit.register(lambda: os.unlink(tmp_elf)) - - if context.os == 'android': - android_path = '/data/data/%s' % os.path.basename(tmp_elf) - adb.push(tmp_elf, android_path) - tmp_elf = android_path - - return debug(tmp_elf, gdbscript=gdbscript, arch=context.arch) - -@LocalContext -def debug_shellcode(data, gdbscript=None, vma=None): - r"""debug_shellcode(data, gdbscript=None, vma=None) -> tube - Creates an ELF file, and launches it under a debugger. - - Arguments: - data(str): Assembled shellcode bytes - gdbscript(str): Script to run in GDB - vma(int): Base address to load the shellcode at - \**kwargs: Override any :obj:`pwnlib.context.context` values. - - Returns: - :class:`.process` - - Example: - - >>> assembly = shellcraft.echo("Hello world!\n") - >>> shellcode = asm(assembly) - >>> io = gdb.debug_shellcode(shellcode) - >>> io.recvline() - b'Hello world!\n' - """ - if isinstance(data, six.text_type): - log.error("Shellcode is cannot be unicode. Did you mean debug_assembly?") - tmp_elf = make_elf(data, extract=False, vma=vma) - os.chmod(tmp_elf, 0o777) - - atexit.register(lambda: os.unlink(tmp_elf)) - - if context.os == 'android': - android_path = '/data/data/%s' % os.path.basename(tmp_elf) - adb.push(tmp_elf, android_path) - tmp_elf = android_path - - return debug(tmp_elf, gdbscript=gdbscript, arch=context.arch) - -def _gdbserver_args(pid=None, path=None, args=None, which=None, env=None): - """_gdbserver_args(pid=None, path=None, args=None, which=None, env=None) -> list - - Sets up a listening gdbserver, to either connect to the specified - PID, or launch the specified binary by its full path. - - Arguments: - pid(int): Process ID to attach to - path(str): Process to launch - args(list): List of arguments to provide on the debugger command line - which(callaable): Function to find the path of a binary. - - Returns: - A list of arguments to invoke gdbserver. - """ - if [pid, path, args].count(None) != 2: - log.error("Must specify exactly one of pid, path, or args") - - if not which: - log.error("Must specify which.") - - gdbserver = '' - - if not args: - args = [str(path or pid)] - - # Android targets have a distinct gdbserver - if context.bits == 64: - gdbserver = which('gdbserver64') - - if not gdbserver: - gdbserver = which('gdbserver') - - if not gdbserver: - log.error("gdbserver is not installed") - - orig_args = args - - gdbserver_args = [gdbserver, '--multi'] - if context.aslr: - gdbserver_args += ['--no-disable-randomization'] - else: - log.warn_once("Debugging process with ASLR disabled") - - if pid: - gdbserver_args += ['--once', '--attach'] - - if env: - env_args = [] - for key in tuple(env): - if key.startswith('LD_'): # LD_PRELOAD / LD_LIBRARY_PATH etc. - env_args.append('{}={}'.format(key, env.pop(key))) - if env_args: - gdbserver_args += ['--wrapper', 'env'] + env_args + ['--'] - - gdbserver_args += ['localhost:0'] - gdbserver_args += args - - return gdbserver_args - -def _gdbserver_port(gdbserver, ssh): - which = _get_which(ssh) - - # Process /bin/bash created; pid = 14366 - # Listening on port 34816 - process_created = gdbserver.recvline() - - if process_created.startswith(b'ERROR:'): - raise ValueError( - 'Failed to spawn process under gdbserver. gdbserver error message: %s' % process_created - ) - - gdbserver.pid = int(process_created.split()[-1], 0) - - listening_on = b'' - while b'Listening' not in listening_on: - listening_on = gdbserver.recvline() - - port = int(listening_on.split()[-1]) - - # Set up port forarding for SSH - if ssh: - remote = ssh.connect_remote('127.0.0.1', port) - listener = tubes.listen.listen(0) - port = listener.lport - - # Disable showing GDB traffic when debugging verbosity is increased - remote.level = 'error' - listener.level = 'error' - - # Hook them up - remote.connect_both(listener) - - # Set up port forwarding for ADB - elif context.os == 'android': - adb.forward(port) - - return port - -def _get_which(ssh=None): - if ssh: return ssh.which - elif context.os == 'android': return adb.which - else: return misc.which - -def _get_runner(ssh=None): - if ssh: return ssh.process - elif context.os == 'android': return adb.process - else: return tubes.process.process - -@LocalContext -def debug(args, gdbscript=None, exe=None, ssh=None, env=None, sysroot=None, **kwargs): - r"""debug(args) -> tube - - Launch a GDB server with the specified command line, - and launches GDB to attach to it. - - Arguments: - args(list): Arguments to the process, similar to :class:`.process`. - gdbscript(str): GDB script to run. - exe(str): Path to the executable on disk - env(dict): Environment to start the binary in - ssh(:class:`.ssh`): Remote ssh session to use to launch the process. - sysroot(str): Foreign-architecture sysroot, used for QEMU-emulated binaries - and Android targets. - - Returns: - :class:`.process` or :class:`.ssh_channel`: A tube connected to the target process - - Notes: - - The debugger is attached automatically, and you can debug everything - from the very beginning. This requires that both ``gdb`` and ``gdbserver`` - are installed on your machine. - - When GDB opens via :func:`debug`, it will initially be stopped on the very first - instruction of the dynamic linker (``ld.so``) for dynamically-linked binaries. - - Only the target binary and the linker will be loaded in memory, so you cannot - set breakpoints on shared library routines like ``malloc`` since ``libc.so`` - has not even been loaded yet. - - There are several ways to handle this: - - 1. Set a breakpoint on the executable's entry point (generally, ``_start``) - - This is only invoked after all of the required shared libraries - are loaded. - - You can generally get the address via the GDB command ``info file``. - 2. Use pending breakpoints via ``set breakpoint pending on`` - - This has the side-effect of setting breakpoints for **every** function - which matches the name. For ``malloc``, this will generally set a - breakpoint in the executable's PLT, in the linker's internal ``malloc``, - and eventaully in ``libc``'s malloc. - 3. Wait for libraries to be loaded with ``set stop-on-solib-event 1`` - - There is no way to stop on any specific library being loaded, and sometimes - multiple libraries are loaded and only a single breakpoint is issued. - - Generally, you just add a few ``continue`` commands until things are set up - the way you want it to be. - - Examples: - - >>> # Create a new process, and stop it at 'main' - >>> io = gdb.debug('bash', ''' - ... break main - ... continue - ... ''') - >>> io.sendline("echo hello") - >>> io.recvline() - b'hello\n' - >>> io.interactive() # doctest: +SKIP - >>> io.close() - - >>> # Create a new process, and stop it at '_start' - >>> io = gdb.debug('bash', ''' - ... # Wait until we hit the main executable's entry point - ... break _start - ... continue - ... - ... # Now set breakpoint on shared library routines - ... break malloc - ... break free - ... continue - ... ''') - >>> io.sendline("echo hello") - >>> io.recvline() - b'hello\n' - >>> io.interactive() # doctest: +SKIP - >>> io.close() - - You can use :func:`debug` to spawn new processes on remote machines as well, - by using the ``ssh=`` keyword to pass in your :class:`.ssh` instance. - - >>> # Connect to the SSH server - - >>> # Start a process on the server - >>> shell = ssh('travis', 'example.pwnme', password='demopass') - >>> io = gdb.debug(['bash'], - ... ssh = shell, - ... gdbscript = ''' - ... break main - ... continue - ... ''') - - >>> # Send a command to Bash - >>> io.sendline("echo hello") - - >>> # Interact with the process - >>> io.interactive() # doctest: +SKIP - >>> io.close() - """ - if isinstance(args, (int, tubes.process.process, tubes.ssh.ssh_channel)): - log.error("Use gdb.attach() to debug a running process") - - if isinstance(args, (bytes, six.text_type)): - args = [args] - - orig_args = args - - runner = _get_runner(ssh) - which = _get_which(ssh) - gdbscript = gdbscript or '' - - if context.noptrace: - log.warn_once("Skipping debugger since context.noptrace==True") - return runner(args, executable=exe, env=env) - - if ssh or context.native or (context.os == 'android'): - args = _gdbserver_args(args=args, which=which, env=env) - else: - qemu_port = random.randint(1024, 65535) - qemu_user = qemu.user_path() - sysroot = sysroot or qemu.ld_prefix(env=env) - if not qemu_user: - log.error("Cannot debug %s binaries without appropriate QEMU binaries" % context.arch) - qemu_args = [qemu_user, '-g', str(qemu_port)] - if sysroot: - qemu_args += ['-L', sysroot] - args = qemu_args + args - - # Use a sane default sysroot for Android - if not sysroot and context.os == 'android': - sysroot = 'remote:/' - - # Make sure gdbserver/qemu is installed - if not which(args[0]): - log.error("%s is not installed" % args[0]) - - if not ssh: - exe = exe or which(orig_args[0]) - if not (exe and os.path.exists(exe)): - log.error("%s does not exist" % exe) - - # Start gdbserver/qemu - # (Note: We override ASLR here for the gdbserver process itself.) - gdbserver = runner(args, env=env, aslr=1, **kwargs) - - # Set the .executable on the process object. - gdbserver.executable = exe - - # Find what port we need to connect to - if context.native or (context.os == 'android'): - port = _gdbserver_port(gdbserver, ssh) - else: - port = qemu_port - - host = '127.0.0.1' - if not ssh and context.os == 'android': - host = context.adb_host - - attach((host, port), exe=exe, gdbscript=gdbscript, need_ptrace_scope = False, ssh=ssh, sysroot=sysroot) - - # gdbserver outputs a message when a client connects - garbage = gdbserver.recvline(timeout=1) - - # Some versions of gdbserver output an additional message - garbage2 = gdbserver.recvline_startswith(b"Remote debugging from host ", timeout=1) - - return gdbserver - -def get_gdb_arch(): - return { - 'amd64': 'i386:x86-64', - 'powerpc': 'powerpc:common', - 'powerpc64': 'powerpc:common64', - 'mips64': 'mips:isa64', - 'thumb': 'arm', - 'sparc64': 'sparc:v9' - }.get(context.arch, context.arch) - -def binary(): - """binary() -> str - - Returns: - str: Path to the appropriate ``gdb`` binary to use. - - Example: - - >>> gdb.binary() # doctest: +SKIP - '/usr/bin/gdb' - """ - gdb = misc.which('pwntools-gdb') or misc.which('gdb') - - if not context.native: - multiarch = misc.which('gdb-multiarch') - - if multiarch: - return multiarch - log.warn_once('Cross-architecture debugging usually requires gdb-multiarch\n' \ - '$ apt-get install gdb-multiarch') - - if not gdb: - log.error('GDB is not installed\n' - '$ apt-get install gdb') - - return gdb - -@LocalContext -def attach(target, gdbscript = '', exe = None, need_ptrace_scope = True, gdb_args = None, ssh = None, sysroot = None): - r"""attach(target, gdbscript = None, exe = None, arch = None, ssh = None) -> None - - Start GDB in a new terminal and attach to `target`. - - Arguments: - target: The target to attach to. - gdbscript(:obj:`str` or :obj:`file`): GDB script to run after attaching. - exe(str): The path of the target binary. - arch(str): Architechture of the target binary. If `exe` known GDB will - detect the architechture automatically (if it is supported). - gdb_args(list): List of additional arguments to pass to GDB. - sysroot(str): Foreign-architecture sysroot, used for QEMU-emulated binaries - and Android targets. - - Returns: - PID of the GDB process (or the window which it is running in). - - Notes: - - The ``target`` argument is very robust, and can be any of the following: - - :obj:`int` - PID of a process - :obj:`str` - Process name. The youngest process is selected. - :obj:`tuple` - Host, port pair of a listening ``gdbserver`` - :class:`.process` - Process to connect to - :class:`.sock` - Connected socket. The executable on the other end of the connection is attached to. - Can be any socket type, including :class:`.listen` or :class:`.remote`. - :class:`.ssh_channel` - Remote process spawned via :meth:`.ssh.process`. - This will use the GDB installed on the remote machine. - If a password is required to connect, the ``sshpass`` program must be installed. - - Examples: - - >>> # Attach directly to pid 1234 - >>> gdb.attach(1234) # doctest: +SKIP - - - >>> # Attach to the youngest "bash" process - >>> gdb.attach('bash') # doctest: +SKIP - - - >>> # Start a process - >>> bash = process('bash') - - >>> # Attach the debugger - >>> pid = gdb.attach(bash, ''' - ... set follow-fork-mode child - ... break execve - ... continue - ... ''') - - >>> # Interact with the process - >>> bash.sendline("whoami") - >>> bash.recvline() - b'travis\n' - >>> bash.close() - - >>> # Start a forking server - >>> server = process(['socat', 'tcp-listen:12345,fork,reuseaddr', 'exec:/bin/bash']) - >>> sleep(1) - - >>> # Connect to the server - >>> io = remote('127.0.0.1', 12345) - - >>> # Connect the debugger to the server-spawned process - >>> pid = gdb.attach(io, ''' - ... break exit - ... continue - ... ''', exe = '/bin/bash') - - >>> # Talk to the spawned 'sh' - >>> io.sendline("echo hello") - >>> io.recvline() - b'hello\n' - >>> io.sendline("exit") - - >>> io.close() - - >>> # Connect to the SSH server - >>> shell = ssh('travis', 'example.pwnme', password='demopass') - - >>> # Start a process on the server - >>> cat = shell.process(['cat']) - - >>> # Attach a debugger to it - >>> gdb.attach(cat, ''' - ... break exit - ... continue - ... ''') - - >>> cat.sendline("hello") - >>> cat.recvline() - b'hello\n' - >>> # Cause `cat` to exit - >>> cat.close() - """ - if context.noptrace: - log.warn_once("Skipping debug attach since context.noptrace==True") - return - - # if gdbscript is a file object, then read it; we probably need to run some - # more gdb script anyway - if hasattr(gdbscript, 'read'): - with gdbscript: - gdbscript = gdbscript.read() - - # enable gdb.attach(p, 'continue') - if gdbscript and not gdbscript.endswith('\n'): - gdbscript += '\n' - - # Use a sane default sysroot for Android - if not sysroot and context.os == 'android': - sysroot = 'remote:/' - - # gdb script to run before `gdbscript` - pre = '' - if not context.native: - pre += 'set endian %s\n' % context.endian - pre += 'set architecture %s\n' % get_gdb_arch() - if sysroot: - pre += 'set sysroot %s\n' % sysroot - - if context.os == 'android': - pre += 'set gnutarget ' + _bfdname() + '\n' - - # let's see if we can find a pid to attach to - pid = None - if isinstance(target, six.integer_types): - # target is a pid, easy peasy - pid = target - elif isinstance(target, str): - # pidof picks the youngest process - pidof = proc.pidof - - if context.os == 'android': - pidof = adb.pidof - - pids = pidof(target) - if not pids: - log.error('No such process: %s' % target) - pid = pids[0] - log.info('Attaching to youngest process "%s" (PID = %d)' % - (target, pid)) - elif isinstance(target, tubes.ssh.ssh_channel): - if not target.pid: - log.error("PID unknown for channel") - - shell = target.parent - - tmpfile = shell.mktemp() - if six.PY3: - tmpfile = tmpfile.decode() - gdbscript = 'shell rm %s\n%s' % (tmpfile, gdbscript) - shell.upload_data(gdbscript or '', tmpfile) - - cmd = ['ssh', '-C', '-t', '-p', str(shell.port), '-l', shell.user, shell.host] - if shell.password: - if not misc.which('sshpass'): - log.error("sshpass must be installed to debug ssh processes") - cmd = ['sshpass', '-p', shell.password] + cmd - if shell.keyfile: - cmd += ['-i', shell.keyfile] - exefile = target.executable - if six.PY3: - exefile = exefile.decode() - cmd += ['gdb -q %s %s -x "%s"' % (exefile, - target.pid, - tmpfile)] - - misc.run_in_new_terminal(' '.join(cmd)) - return - - elif isinstance(target, tubes.sock.sock): - pids = proc.pidof(target) - if not pids: - log.error('could not find remote process (%s:%d) on this machine' % - target.sock.getpeername()) - pid = pids[0] - elif isinstance(target, tubes.process.process): - pid = proc.pidof(target)[0] - exe = exe or target.executable - elif isinstance(target, tuple) and len(target) == 2: - host, port = target - - if context.os != 'android': - pre += 'target remote %s:%d\n' % (host, port) - else: - # Android debugging is done over gdbserver, which can't follow - # new inferiors (tldr; follow-fork-mode child) unless it is run - # in extended-remote mode. - pre += 'target extended-remote %s:%d\n' % (host, port) - pre += 'set detach-on-fork off\n' - - def findexe(): - for spid in proc.pidof(target): - sexe = proc.exe(spid) - name = os.path.basename(sexe) - # XXX: parse cmdline - if name.startswith('qemu-') or name.startswith('gdbserver'): - exe = proc.cmdline(spid)[-1] - return os.path.join(proc.cwd(spid), exe) - - exe = exe or findexe() - elif isinstance(target, elf.corefile.Corefile): - pre += 'target core %s\n' % target.path - else: - log.error("don't know how to attach to target: %r" % target) - - # if we have a pid but no exe, just look it up in /proc/ - if pid and not exe: - exe_fn = proc.exe - if context.os == 'android': - exe_fn = adb.proc_exe - exe = exe_fn(pid) - - if not pid and not exe and not ssh: - log.error('could not find target process') - - cmd = binary() - - if gdb_args: - cmd += ' ' - cmd += ' '.join(gdb_args) - - if context.gdbinit: - cmd += ' -nh ' # ignore ~/.gdbinit - cmd += ' -x %s ' % context.gdbinit # load custom gdbinit - - cmd += ' -q ' - - if exe and context.native: - if not ssh and not os.path.isfile(exe): - log.error('No such file: %s' % exe) - cmd += ' "%s"' % exe - - if pid and not context.os == 'android': - cmd += ' %d' % pid - - if context.os == 'android' and pid: - runner = _get_runner() - which = _get_which() - gdb_cmd = _gdbserver_args(pid=pid, which=which, env=env) - gdbserver = runner(gdb_cmd) - port = _gdbserver_port(gdbserver, None) - host = context.adb_host - pre += 'target extended-remote %s:%i\n' % (context.adb_host, port) - - # gdbserver on Android sets 'detach-on-fork on' which breaks things - # when you're trying to debug anything that forks. - pre += 'set detach-on-fork off\n' - - gdbscript = pre + (gdbscript or '') - - if gdbscript: - tmp = tempfile.NamedTemporaryFile(prefix = 'pwn', suffix = '.gdb', - delete = False, mode = 'w+') - log.debug('Wrote gdb script to %r\n%s' % (tmp.name, gdbscript)) - gdbscript = 'shell rm %s\n%s' % (tmp.name, gdbscript) - - tmp.write(gdbscript) - tmp.close() - cmd += ' -x "%s"' % (tmp.name) - - log.info('running in new terminal: %s' % cmd) - - gdb_pid = misc.run_in_new_terminal(cmd) - - if pid and context.native: - proc.wait_for_debugger(pid) - - return gdb_pid - -def ssh_gdb(ssh, argv, gdbscript = None, arch = None, **kwargs): - if not isinstance(argv, (list, tuple)): - argv = [argv] - - exe = argv[0] - argv = ["gdbserver", "--multi", "127.0.0.1:0"] + argv - - # Download the executable - local_exe = os.path.basename(exe) - ssh.download_file(ssh.which(exe), local_exe) - - # Run the process - c = ssh.process(argv, **kwargs) - - # Find the port for the gdb server - c.recvuntil(b'port ') - line = c.recvline().strip() - gdbport = re.match(b'[0-9]+', line) - if gdbport: - gdbport = int(gdbport.group(0)) - - l = tubes.listen.listen(0) - forwardport = l.lport - - attach(('127.0.0.1', forwardport), gdbscript, local_exe, arch, ssh=ssh) - l.wait_for_connection().connect_both(ssh.connect_remote('127.0.0.1', gdbport)) - return c - -def find_module_addresses(binary, ssh=None, ulimit=False): - """ - Cheat to find modules by using GDB. - - We can't use ``/proc/$pid/map`` since some servers forbid it. - This breaks ``info proc`` in GDB, but ``info sharedlibrary`` still works. - Additionally, ``info sharedlibrary`` works on FreeBSD, which may not have - procfs enabled or accessible. - - The output looks like this: - - :: - - info proc mapping - process 13961 - warning: unable to open /proc file '/proc/13961/maps' - - info sharedlibrary - From To Syms Read Shared Object Library - 0xf7fdc820 0xf7ff505f Yes (*) /lib/ld-linux.so.2 - 0xf7fbb650 0xf7fc79f8 Yes /lib32/libpthread.so.0 - 0xf7e26f10 0xf7f5b51c Yes (*) /lib32/libc.so.6 - (*): Shared library is missing debugging information. - - Note that the raw addresses provided by ``info sharedlibrary`` are actually - the address of the ``.text`` segment, not the image base address. - - This routine automates the entire process of: - - 1. Downloading the binaries from the remote server - 2. Scraping GDB for the information - 3. Loading each library into an ELF - 4. Fixing up the base address vs. the ``.text`` segment address - - Arguments: - binary(str): Path to the binary on the remote server - ssh(pwnlib.tubes.tube): SSH connection through which to load the libraries. - If left as :const:`None`, will use a :class:`pwnlib.tubes.process.process`. - ulimit(bool): Set to :const:`True` to run "ulimit -s unlimited" before GDB. - - Returns: - A list of pwnlib.elf.ELF objects, with correct base addresses. - - Example: - - >>> with context.local(log_level=9999): - ... shell = ssh(host='example.pwnme', - ... user='travis', - ... password='demopass') - ... bash_libs = gdb.find_module_addresses('/bin/bash', shell) - >>> os.path.basename(bash_libs[0].path) - 'libc.so.6' - >>> hex(bash_libs[0].symbols['system']) # doctest: +SKIP - '0x7ffff7634660' - """ - # - # Download all of the remote libraries - # - if ssh: - runner = ssh.run - local_bin = ssh.download_file(binary) - local_elf = elf.ELF(os.path.basename(binary)) - local_libs = ssh.libs(binary) - - else: - runner = tubes.process.process - local_elf = elf.ELF(binary) - local_libs = local_elf.libs - - entry = local_elf.header.e_entry - - # - # Get the addresses from GDB - # - libs = {} - cmd = "gdb -q --args %s" % (binary) - expr = re.compile(r'(0x\S+)[^/]+(.*)') - - if ulimit: - cmd = 'sh -c "(ulimit -s unlimited; %s)"' % cmd - - cmd = shlex.split(cmd) - - with runner(cmd) as gdb: - if context.aslr: - gdb.sendline('set disable-randomization off') - gdb.send(""" - set prompt - break *%#x - run - """ % entry) - gdb.clean(2) - gdb.sendline('info sharedlibrary') - lines = context._decode(gdb.recvrepeat(2)) - - for line in lines.splitlines(): - m = expr.match(line) - if m: - libs[m.group(2)] = int(m.group(1),16) - gdb.sendline('kill') - gdb.sendline('y') - gdb.sendline('quit') - - # - # Fix up all of the addresses against the .text address - # - rv = [] - - for remote_path,text_address in sorted(libs.items()): - # Match up the local copy to the remote path - try: - path = next(p for p in local_libs.keys() if remote_path in p) - except StopIteration: - print("Skipping %r" % remote_path) - continue - - # Load it - lib = elf.ELF(path) - - # Find its text segment - text = lib.get_section_by_name('.text') - - # Fix the address - lib.address = text_address - text.header.sh_addr - rv.append(lib) - - return rv - -def corefile(process): - r"""Drops a core file for the process. - - Arguments: - process: Process to dump - - Returns: - :class:`.Core`: The generated core file - """ - - if context.noptrace: - log.warn_once("Skipping corefile since context.noptrace==True") - return - - corefile_path = './core.%s.%i' % (os.path.basename(process.executable), - process.pid) - - # Due to https://sourceware.org/bugzilla/show_bug.cgi?id=16092 - # will disregard coredump_filter, and will not dump private mappings. - if version() < (7,11): - log.warn_once('The installed GDB (%s) does not emit core-dumps which ' - 'contain all of the data in the process.\n' - 'Upgrade to GDB >= 7.11 for better core-dumps.' % binary()) - - # This is effectively the same as what the 'gcore' binary does - gdb_args = ['-batch', - '-q', - '--nx', - '-ex', '"set pagination off"', - '-ex', '"set height 0"', - '-ex', '"set width 0"', - '-ex', '"set use-coredump-filter on"', - '-ex', '"generate-core-file %s"' % corefile_path, - '-ex', 'detach'] - - with context.local(terminal = ['sh', '-c']): - with context.quiet: - pid = attach(process, gdb_args=gdb_args) - os.waitpid(pid, 0) - - return elf.corefile.Core(corefile_path) - -def version(program='gdb'): - """Gets the current GDB version. - - Note: - Requires that GDB version meets the following format: - - ``GNU gdb (GDB) 7.12`` - - Returns: - tuple: A tuple containing the version numbers - - Example: - - >>> (7,0) <= gdb.version() <= (8,0) - True - """ - program = misc.which(program) - expr = br'([0-9]+\.?)+' - - with tubes.process.process([program, '--version'], level='error') as gdb: - version = gdb.recvline() - - versions = re.search(expr, version).group() - - return tuple(map(int, versions.split(b'.'))) diff --git a/pwnlib/heap/heap.py b/pwnlib/heap/heap.py deleted file mode 100644 index eb86d6250..000000000 --- a/pwnlib/heap/heap.py +++ /dev/null @@ -1,188 +0,0 @@ -from .utils import align_address -from construct import * - - -class HeapParser: - """Class to parse the chunks of a heap and return a Heap object - - Args: - malloc_chunk_parser (MallocChunkParser): parser for the raw malloc - chunks - malloc_state_parser (MallocStateParser): parser for the raw malloc_state - struct - """ - - def __init__(self, malloc_chunk_parser, malloc_state_parser): - self._process_informer = malloc_chunk_parser.process_informer - self._pointer_size = malloc_chunk_parser.pointer_size - self._malloc_alignment = self._pointer_size * 2 - self._raw_heap_info_size = self._pointer_size * 4 - - self._malloc_chunk_parser = malloc_chunk_parser - self._malloc_state_parser = malloc_state_parser - self._heap_info_parser = HeapInfoParser(self._process_informer) - - def parse_from_malloc_state(self, malloc_state): - """Returns the heap of the arena of the given malloc state - - Args: - malloc_state (MallocState) - - Returns: - Heap - """ - - heap_address, heap_size = self.calculate_heap_address_and_size_from_malloc_state(malloc_state) - return self._parse_from_address(heap_address, heap_size) - - def calculate_heap_address_and_size_from_malloc_state(self, malloc_state): - """Returns the heap start address and heap size, based on the - information of the provided malloc state - - Args: - malloc_state (MallocState) - - Returns: - tuple(int, int) - """ - maps = self._process_informer.maps() - current_heap_map = maps.map_with_address(malloc_state.top) - main_heap_map = maps.heap - - is_main_heap = current_heap_map.address == main_heap_map.address - if is_main_heap: - heap_start_address = current_heap_map.address - else: - heap_start_address = self._calculate_non_main_heap_start_address( - current_heap_map.address - ) - - heap_size = current_heap_map.size - \ - (heap_start_address - current_heap_map.start_address) - return heap_start_address, heap_size - - def _calculate_non_main_heap_start_address(self, heap_map_start_address): - heap_info = self._heap_info_parser.parse_from_address(heap_map_start_address) - heap_start_address = heap_info.ar_ptr + \ - self._malloc_state_parser.raw_malloc_state_size - return align_address(heap_start_address, self._malloc_alignment) - - def _parse_from_address(self, address, size): - raw_heap = self._process_informer.read_memory(address, size) - return self._parse_from_raw(address, raw_heap) - - def _parse_from_raw(self, heap_address, raw_heap): - offset = 0 - chunks = [] - - first_chunk = self._malloc_chunk_parser.parse_from_raw( - heap_address, - raw_heap - ) - - if first_chunk.size == 0: - offset += self._pointer_size*2 - - while offset < len(raw_heap): - current_address = heap_address + offset - chunk = self._malloc_chunk_parser.parse_from_raw( - current_address, - raw_heap[offset:] - ) - offset += chunk.size - chunks.append(chunk) - - return Heap(heap_address, chunks) - - -class Heap: - """Class to represent a heap with some useful metadata. Heap is considered - a collection of chunks. - - Attributes: - address (int): The start address of the heap - chunks (list of MallocChunk): The list of chunks of the heap - top (MallocChunk): The Top chunk of the heap - """ - - def __init__(self, address, malloc_chunks): - self.address = address - self.chunks = malloc_chunks - - @property - def top(self): - return self.chunks[-1] - - -class HeapInfoParser: - """Class to parse the `heap_info` structure - - Args: - process_informer (ProcessInformer): Helper to perform operations over - memory and obtain info of the process - """ - - def __init__(self, process_informer): - self._process_informer = process_informer - self._pointer_size = process_informer.pointer_size - if self._pointer_size == 8: - pointer_type = Int64ul - else: - pointer_type = Int32ul - - self.heap_info_definition = Struct( - "ar_ptr"/ pointer_type, - "prev"/ pointer_type, - "size" / pointer_type, - "mprotect_size" / pointer_type - ) - - def parse_from_address(self, address): - raw_heap_info = self._process_informer.read_memory( - address, - self.heap_info_definition.sizeof() - ) - return self._parse_from_raw(raw_heap_info) - - def _parse_from_raw(self, raw): - heap_info_collection = self.heap_info_definition.parse(raw) - - return HeapInfo( - ar_ptr=heap_info_collection.ar_ptr, - prev=heap_info_collection.prev, - size=heap_info_collection.size, - mprotect_size=heap_info_collection.mprotect_size - ) - - -class HeapInfo: - """Class with the information of the `heap_info` structure. - - ```c - typedef struct _heap_info - { - mstate ar_ptr; /* Arena for this heap. */ - struct _heap_info *prev; /* Previous heap. */ - size_t size; /* Current size in bytes. */ - size_t mprotect_size; /* Size in bytes that has been mprotected - PROT_READ|PROT_WRITE. */ - /* Make sure the following data is properly aligned, particularly - that sizeof (heap_info) + 2 * SIZE_SZ is a multiple of - MALLOC_ALIGNMENT. */ - char pad[-6 * SIZE_SZ & MALLOC_ALIGN_MASK]; - } heap_info; - ``` - - Attributes: - ar_ptr (int): Address of the arena `malloc_state` structure. - prev (int): Address of the previous heap. - size (int): Size of the heap. - mprotect_size (int): Size of the heap which has benn mprotected with - PROT_READ|PROT_WRITE. - """ - - def __init__(self, ar_ptr, prev, size, mprotect_size): - self.ar_ptr = ar_ptr - self.prev = prev - self.size = size - self.mprotect_size = mprotect_size diff --git a/pwnlib/heap/malloc_chunk.py b/pwnlib/heap/malloc_chunk.py index 528a811f1..cf7b9b847 100644 --- a/pwnlib/heap/malloc_chunk.py +++ b/pwnlib/heap/malloc_chunk.py @@ -1,3 +1,6 @@ +from .utils import * +from .basic_formatter import * + class MallocChunkParser: """Class with the logic to parsing the malloc_chunk struct from binary @@ -139,6 +142,11 @@ def __init__(self, address, previous_size, size, prev_in_use, mmapped, self.data_address = self.address + pointer_size * 2 self.size_with_flags = size | int(non_main_arena)*4 | int(mmapped)*2 | int(prev_in_use) + if pointer_size == 8: + self._pack_pointer = p64 + else: + self._pack_pointer = p32 + def __str__(self): string = "" string += "previous_size = {:#x}\n".format(self.previous_size) @@ -149,3 +157,37 @@ def __str__(self): string += "bk_nextsize = {:#x}\n".format(self.bk_nextsize) return string + + def format_first_bytes_as_hexdump_str(self): + msg = [] + raw_bytes = self._fd_bytes() + raw_bytes += self._bk_bytes() + + for byte in raw_bytes: + msg.append("{:02x} ".format(byte)) + + msg.append(" ") + + for byte in raw_bytes: + msg.append( + chr(byte) if 0x20 <= byte < 0x7F else "." + ) + + return "".join(msg) + + def _fd_bytes(self): + return bytearray(self._pack_pointer(self.fd)) + + def _bk_bytes(self): + return bytearray(self._pack_pointer(self.bk)) + + def format_flags_as_str(self): + flags = [] + if self.non_main_arena: + flags.append("NON_MAIN_ARENA") + if self.mmapped: + flags.append("MMAPPED") + if self.prev_in_use: + flags.append("PREV_IN_USE") + + return "|".join(flags) diff --git a/pwnlib/heap/malloc_state/bins/parser.py b/pwnlib/heap/malloc_state/bins/parser.py index e13e05c9f..e402fbf89 100644 --- a/pwnlib/heap/malloc_state/bins/parser.py +++ b/pwnlib/heap/malloc_state/bins/parser.py @@ -1,8 +1,8 @@ from pwnlib.heap.utils import * -from .bins import Bins -from pwnlib.heap.bins import * +from pwnlib.heap.bins import SmallBinEntry, LargeBinEntry, UnsortedBinEntry from .bins_indexes import * +from .bins import Bins class BinsParser: diff --git a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py index 2ce25b9ba..2d0c7fda9 100644 --- a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py +++ b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py @@ -1,3 +1,4 @@ +from pwnlib.heap.basic_formatter import BasicFormatter class MallocState: @@ -60,6 +61,7 @@ def __init__(self, address, mutex, flags, have_fastchunks, self.attached_threads = attached_threads self.system_mem = system_mem self.max_system_mem = max_system_mem + self._basic_formatter = BasicFormatter() @property def unsorted_bin(self): @@ -74,6 +76,87 @@ def large_bins(self): return self.bins.large_bins_entries def __str__(self): + msg = [ + self._basic_formatter.header( + "Malloc State ({:#x})".format(self.address) + ), + self._format_malloc_state(), + self._basic_formatter.footer() + ] + return "\n".join(msg) + + def _format_malloc_state(self): + string = [ + "mutex = {:#x}".format(self.mutex), + "flags = {:#x}".format(self.flags) + ] + + if self.have_fastchunks is not None: + string.append( + "have_fastchunks = {:#x}".format(self.have_fastchunks) + ) + + string.append(self._format_malloc_state_fastbinsY_as_str()) + + string.append("top = {:#x}".format(self.top)) + string.append("last_remainder = {:#x}".format(self.last_remainder)) + string.append(self._format_malloc_state_bins_as_str()) + + string.append("binmap = [{:#x}, {:#x}, {:#x}, {:#x}]".format( + self.binmap[0], + self.binmap[1], + self.binmap[2], + self.binmap[3] + )) + string.append("next = {:#x}".format(self.next)) + string.append("next_free = {:#x}".format(self.next_free)) + + if self.attached_threads is not None: + string.append("attached_threads = {:#x}".format( + self.attached_threads + )) + string.append("system_mem = {:#x}".format(self.system_mem)) + string.append("max_system_mem = {:#x}".format(self.max_system_mem)) + + return "\n".join(string) + + def _format_malloc_state_fastbinsY_as_str(self): + string = ["fastbinsY"] + for i, entry in enumerate(self.fastbinsY): + string.append(" [{}] {:#x} => {:#x}".format( + i, entry.chunks_size, entry.fd + )) + + return "\n".join(string) + + def _format_malloc_state_bins_as_str(self): + string = ["bins"] + index = 0 + + string.append(" Unsorted bins") + unsorted_entry = self.bins.unsorted_bin_entry + string.append(" [{}] fd={:#x} bk={:#x}".format( + index, unsorted_entry.fd, unsorted_entry.bk + )) + + index += 1 + string.append(" Small bins") + for small_entry in self.bins.small_bins_entries: + string.append(" [{}] {:#x} fd={:#x} bk={:#x}".format( + index, small_entry.chunks_size, small_entry.fd, small_entry.bk + )) + index += 1 + + string.append(" Large bins") + for small_entry in self.bins.large_bins_entries: + string.append(" [{}] {:#x} fd={:#x} bk={:#x}".format( + index, small_entry.chunks_size, small_entry.fd, small_entry.bk + )) + index += 1 + + return "\n".join(string) + + def __repr__(self): string = "mutex = {:#x}\n".format(self.mutex) string += "flags = {:#x}\n".format(self.flags) diff --git a/pwnlib/heap/printer/__init__.py b/pwnlib/heap/printer/__init__.py deleted file mode 100644 index 8b6b1ddbd..000000000 --- a/pwnlib/heap/printer/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ - -from .printer import * diff --git a/pwnlib/heap/printer/formatter.py b/pwnlib/heap/printer/formatter.py deleted file mode 100644 index d218208f9..000000000 --- a/pwnlib/heap/printer/formatter.py +++ /dev/null @@ -1,253 +0,0 @@ -from heap_explorer.bins import * -from heap_explorer.malloc_state import * - - -class MallocChunkFormatter: - - def __init__(self, pointer_size): - if pointer_size == 8: - self._p = p64 - else: - self._p = p32 - - def format_chunk_flags_as_str(self, chunk): - flags = [] - if chunk.non_main_arena: - flags.append("NON_MAIN_ARENA") - if chunk.mmapped: - flags.append("MMAPPED") - if chunk.prev_in_use: - flags.append("PREV_IN_USE") - - return "|".join(flags) - - def format_chunk_first_bytes_as_hexdump_str(self, chunk): - msg = "" - raw_bytes = bytearray(self._p(chunk.fd)) - raw_bytes += bytearray(self._p(chunk.bk)) - - for byte in raw_bytes: - msg += "{:02x} ".format(byte) - - msg += " " - - for byte in raw_bytes: - msg += chr(byte) if 0x20 <= byte < 0x7F else "." - - return msg - - -class BinFormatter: - - def __init__(self, pointer_size): - self._malloc_chunk_formatter = MallocChunkFormatter(pointer_size) - - def format_bins_summary(self, bins, start_index=0): - bins_str = [] - for i, bin_ in enumerate(bins): - if len(bin_) > 0: - bins_str.append( - " [{}] {:#x} ({})".format( - start_index + i, bin_.chunks_size, len(bin_)) - ) - - if bins_str: - return "\n".join(bins_str) - else: - return " [-] No chunks found" - - def format_bins(self, bins, start_index=0, print_all=True): - bins_str = [] - for i, bin_ in enumerate(bins): - if print_all or len(bin_) > 0: - bins_str.append("[{}] {}".format( - i + start_index, self._format_bin_as_str(bin_)) - ) - - if bins_str: - return "\n".join(bins_str) - else: - return " [-] No chunks found" - - def _format_bin_as_str(self, bin_): - msg = self._format_bin_name_as_str(bin_) - - if not isinstance(bin_, UnsortedBin): - msg += " {:#x}".format(bin_.chunks_size) - - msg += " ({})".format(len(bin_.malloc_chunks)) - - next_address = bin_.fd - for chunk in bin_.malloc_chunks: - flags = self._malloc_chunk_formatter.format_chunk_flags_as_str(chunk) - msg += " => Chunk({:#x} {:#x}".format(next_address, chunk.size) - if flags: - msg += " {}".format(flags) - msg += ")" - next_address = chunk.fd - - msg += " => {:#x}".format(next_address) - return msg - - def _format_bin_name_as_str(self, bin_): - if isinstance(bin_, FastBin): - return "Fastbin" - elif isinstance(bin_, UnsortedBin): - return "Unsorted bins" - elif isinstance(bin_, SmallBin): - return "Smallbin" - elif isinstance(bin_, LargeBin): - return "Largebin" - elif isinstance(bin_, Tcache): - return "Tcache" - else: - raise TypeError() - - -class HeapFormatter: - - def __init__(self, pointer_size): - self._malloc_chunk_formatter = MallocChunkFormatter(pointer_size) - - def format_heap(self, heap): - chunks_str = [self._format_heap_chunk_as_str(chunk) for chunk in heap.chunks] - return "\n".join(chunks_str) - - def _format_heap_chunk_as_str(self, chunk): - msg = "" - flags = self._malloc_chunk_formatter.format_chunk_flags_as_str(chunk) - - msg += "{:#x} {:#x} {}".format(chunk.address, chunk.size, flags) - msg += "\n" - msg += " " + self._malloc_chunk_formatter.format_chunk_first_bytes_as_hexdump_str(chunk) - - return msg - - -class MallocStateFormatter: - - def format_malloc_state(self, malloc_state): - string = "" - string += "mutex = {:#x}\n".format(malloc_state.mutex) - string += "flags = {:#x}\n".format(malloc_state.flags) - - if malloc_state.have_fastchunks is not None: - string += "have_fastchunks = {:#x}\n".format(malloc_state.have_fastchunks) - - string += self._format_malloc_state_fastbinsY_as_str(malloc_state.fastbinsY) - - string += "top = {:#x}\n".format(malloc_state.top) - string += "last_remainder = {:#x}\n".format(malloc_state.last_remainder) - string += self._format_malloc_state_bins_as_str(malloc_state.bins) - - string += "binmap = [{:#x}, {:#x}, {:#x}, {:#x}]\n".format( - malloc_state.binmap[0], - malloc_state.binmap[1], - malloc_state.binmap[2], - malloc_state.binmap[3] - ) - string += "next = {:#x}\n".format(malloc_state.next) - string += "next_free = {:#x}\n".format(malloc_state.next_free) - - if malloc_state.attached_threads is not None: - string += "attached_threads = {:#x}\n".format( - malloc_state.attached_threads - ) - string += "system_mem = {:#x}\n".format(malloc_state.system_mem) - string += "max_system_mem = {:#x}".format(malloc_state.max_system_mem) - - return string - - def _format_malloc_state_fastbinsY_as_str(self, fastbinsY): - string = "fastbinsY\n" - for i, entry in enumerate(fastbinsY): - string += " [{}] {:#x} => {:#x}\n".format( - i, entry.chunks_size, entry.fd) - - return string - - def _format_malloc_state_bins_as_str(self, bins): - string = "bins\n" - index = 0 - - string += " Unsorted bins\n" - unsorted_entry = bins.unsorted_bin_entry - string += " [{}] fd={:#x} bk={:#x}\n".format( - index, unsorted_entry.fd, unsorted_entry.bk) - - index += 1 - string += " Small bins\n" - for small_entry in bins.small_bins_entries: - string += " [{}] {:#x} fd={:#x} bk={:#x}\n".format( - index, small_entry.chunks_size, small_entry.fd, small_entry.bk) - index += 1 - - string += " Large bins\n" - for small_entry in bins.large_bins_entries: - string += " [{}] {:#x} fd={:#x} bk={:#x}\n".format( - index, small_entry.chunks_size, small_entry.fd, small_entry.bk) - index += 1 - - return string - - -class ArenaFormatter: - - def __init__(self, pointer_size): - self._bins_formatter = BinFormatter(pointer_size) - - def format_arena_summary(self, arena): - msg = "" - - malloc_state = arena.malloc_state - msg += "- Malloc State ({:#x})\n".format(malloc_state.address) - msg += " top = {:#x}\n".format(malloc_state.top) - msg += " last_remainder = {:#x}\n".format(malloc_state.last_remainder) - msg += " next = {:#x}\n".format(malloc_state.next) - msg += " next_free = {:#x}\n".format(malloc_state.next_free) - msg += " system_mem = {:#x}\n".format(malloc_state.system_mem) - - heap = arena.heap - msg += "- Heap ({:#x})\n".format(heap.address) - msg += " chunks_count = {:#x}\n".format(len(heap.chunks)) - msg += " top: addr = {:#x}, size = {:#x}\n".format(heap.top.address, heap.top.size) - - try: - tcaches = arena.tcaches - msg += "- Tcaches\n" - msg += "{}\n".format( - self._bins_formatter.format_bins_summary(tcaches) - ) - except NoTcacheError: - pass - - msg += "- Fast bins\n" - msg += "{}\n".format( - self._bins_formatter.format_bins_summary(arena.fast_bins) - ) - - msg += "- Unsorted bins\n" - if len(arena.unsorted_bin) > 0: - msg += " [0] ({})\n".format(len(arena.unsorted_bin)) - else: - msg += " [-] No chunks found\n" - - msg += "- Small bins\n" - msg += "{}\n".format( - self._bins_formatter.format_bins_summary( - arena.small_bins, - start_index=SMALL_BINS_START_INDEX - ) - ) - - msg += "- Large bins\n" - msg += "{}".format( - self._bins_formatter.format_bins_summary( - arena.large_bins, - start_index=LARGE_BINS_START_INDEX - ) - ) - - return msg - - diff --git a/pwnlib/heap/printer/printer.py b/pwnlib/heap/printer/printer.py deleted file mode 100644 index a97c58c24..000000000 --- a/pwnlib/heap/printer/printer.py +++ /dev/null @@ -1,130 +0,0 @@ -from heap_explorer.malloc_state import * -from .formatter import * - -import shutil - - -def get_terminal_width(): - try: - return shutil.get_terminal_size().columns - except AttributeError: - import os - _, columns = os.popen('stty size', 'r').read().split() - return columns - - -class BinPrinter: - - _MAXIMUM_WIDTH = 80 - - def __init__(self, pointer_size): - self.width = self._MAXIMUM_WIDTH - term_width = get_terminal_width() - - if term_width < self.width: - self.width = term_width - - self.title_surrounded_symbol = "=" - self._pointer_size = pointer_size - - self._heap_formatter = HeapFormatter(pointer_size) - self._bin_formatter = BinFormatter(pointer_size) - self._malloc_state_formatter = MallocStateFormatter() - self._arena_formatter = ArenaFormatter(pointer_size) - - def print_arena(self, arena): - self._print_super_title("Arena") - self.print_malloc_state(arena.malloc_state) - self.print_heap(arena.heap) - self.print_all_bins_types(arena) - self._print_super_close() - - def print_arena_summary(self, arena): - self._print_title("Arena") - print(self._arena_formatter.format_arena_summary(arena)) - self._print_close() - - def print_malloc_state(self, malloc_state): - self._print_title("Malloc State ({:#x})".format(malloc_state.address)) - print(self._malloc_state_formatter.format_malloc_state(malloc_state)) - self._print_close() - - def print_heap(self, heap): - self._print_title("Heap ({:#x})".format(heap.address)) - print(self._heap_formatter.format_heap(heap)) - self._print_close() - - def print_all_bins_types(self, arena, print_all=False): - try: - self.print_tcaches(arena.tcaches, print_all) - except NoTcacheError: - pass - - self.print_fast_bins(arena.fast_bins, print_all) - self.print_unsorted_bin(arena.unsorted_bin, print_all) - self.print_small_bins(arena.small_bins, print_all) - self.print_large_bins(arena.large_bins, print_all) - - def print_tcaches(self, tcaches, print_all=False): - return self._print_bins(tcaches, "Tcaches", print_all) - - def print_fast_bins(self, fast_bins, print_all=False): - return self._print_bins( - fast_bins, - "Fast bins", - print_all, - ) - - def print_unsorted_bin(self, unsorted_bin, print_all=False): - return self._print_bins( - [unsorted_bin], - "Unsorted bins", - print_all, - start_index=UNSORTED_BIN_INDEX - ) - - def print_small_bins(self, small_bins, print_all=False): - return self._print_bins( - small_bins, - "Small bins", - print_all, - start_index=SMALL_BINS_START_INDEX - ) - - def print_large_bins(self, large_bins, print_all=False): - return self._print_bins( - large_bins, - "Large bins", - print_all, - start_index=LARGE_BINS_START_INDEX - ) - - def _print_bins(self, bins, title, print_all=False, start_index=0): - self._print_title(title) - print(self._bin_formatter.format_bins(bins, start_index, print_all)) - self._print_close() - - def _print_title(self, title): - print(self._format_title(title)) - - def _format_title(self, title, separator="="): - side_len = self._calc_side_len(title) - side = separator * side_len - return "{} {} {}".format(side, title, side) - - def _format_super_title(self, title): - msg = "{}\n".format(self._format_title(title, separator="+")) - msg += "+" * self.width - return msg - - def _print_super_title(self, title): - print(self._format_super_title(title)) - - def _calc_side_len(self, title): - return int((self.width - len(title) - 2) / 2) - - def _print_close(self): - print("=" * self.width) - - def _print_super_close(self): - print("+" * self.width) From 1e893736990cb8fecac65b8393215203304332b4 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Wed, 29 Jan 2020 21:10:49 +0100 Subject: [PATCH 011/179] added __str__ methods to heap items --- pwnlib/heap/arena/__init__.py | 3 + pwnlib/heap/arena/arena.py | 109 ++++++++++++++++++ pwnlib/heap/arena/parser.py | 71 ++++++++++++ pwnlib/heap/bins/tcache/__init__.py | 3 + pwnlib/heap/bins/tcache/entry.py | 11 ++ pwnlib/heap/bins/tcache/error.py | 9 ++ pwnlib/heap/bins/tcache/parser.py | 87 ++++++++++++++ pwnlib/heap/bins/tcache/tcache.py | 19 +++ .../bins/tcache/tcache_per_thread_struct.py | 94 +++++++++++++++ pwnlib/heap/heap/__init__.py | 3 + pwnlib/heap/heap/heap.py | 44 +++++++ pwnlib/heap/heap/heap_info.py | 75 ++++++++++++ pwnlib/heap/heap/heap_parser.py | 97 ++++++++++++++++ 13 files changed, 625 insertions(+) create mode 100644 pwnlib/heap/arena/__init__.py create mode 100644 pwnlib/heap/arena/arena.py create mode 100644 pwnlib/heap/arena/parser.py create mode 100644 pwnlib/heap/bins/tcache/__init__.py create mode 100644 pwnlib/heap/bins/tcache/entry.py create mode 100644 pwnlib/heap/bins/tcache/error.py create mode 100644 pwnlib/heap/bins/tcache/parser.py create mode 100644 pwnlib/heap/bins/tcache/tcache.py create mode 100644 pwnlib/heap/bins/tcache/tcache_per_thread_struct.py create mode 100644 pwnlib/heap/heap/__init__.py create mode 100644 pwnlib/heap/heap/heap.py create mode 100644 pwnlib/heap/heap/heap_info.py create mode 100644 pwnlib/heap/heap/heap_parser.py diff --git a/pwnlib/heap/arena/__init__.py b/pwnlib/heap/arena/__init__.py new file mode 100644 index 000000000..29ae7580e --- /dev/null +++ b/pwnlib/heap/arena/__init__.py @@ -0,0 +1,3 @@ + +from .arena import * +from .parser import * diff --git a/pwnlib/heap/arena/arena.py b/pwnlib/heap/arena/arena.py new file mode 100644 index 000000000..5383d756f --- /dev/null +++ b/pwnlib/heap/arena/arena.py @@ -0,0 +1,109 @@ +from pwnlib.heap.bins import * +from pwnlib.heap.malloc_state import * +from pwnlib.heap.basic_formatter import BasicFormatter + + +class Arena(object): + """Class with the information of the arena + + Attributes: + malloc_state (MallocState) + heap (Heap) + tcaches (list of Tcaches) + fast_bins (list of FastBin) + unsorted_bin (UnsortedBin) + small_bins (list of SmallBin) + large_bins (list of LargeBin) + """ + + def __init__(self, malloc_state, heap, unsorted_bin, + small_bins, large_bins, fast_bins, tcaches): + self.malloc_state = malloc_state + self.heap = heap + self._tcaches = tcaches + self.fast_bins = fast_bins + self.unsorted_bin = unsorted_bin + self.small_bins = small_bins + self.large_bins = large_bins + self._basic_formatter = BasicFormatter() + + @property + def tcaches(self): + if self._tcaches is None: + raise NoTcacheError() + + return self._tcaches + + + def __str__(self): + msg = [ + self._basic_formatter.super_header("Arena"), + str(self.malloc_state), + str(self.heap), + ] + + try: + msg.append(str(self.tcaches)) + except NoTcacheError: + pass + + msg.append(str(self.fast_bins)) + msg.append(str(self.unsorted_bin)) + msg.append(str(self.small_bins)) + msg.append(str(self.large_bins)) + msg.append(self._basic_formatter.super_footer()) + + return "\n".join(msg) + + def summary(self): + msg = [ + self._basic_formatter.header("Arena"), + self._format_summary(), + self._basic_formatter.footer() + ] + return "\n".join(msg) + + def _format_summary(self): + msg = "" + + malloc_state = self.malloc_state + msg += "- Malloc State ({:#x})\n".format(malloc_state.address) + msg += " top = {:#x}\n".format(malloc_state.top) + msg += " last_remainder = {:#x}\n".format( + malloc_state.last_remainder + ) + msg += " next = {:#x}\n".format(malloc_state.next) + msg += " next_free = {:#x}\n".format(malloc_state.next_free) + msg += " system_mem = {:#x}\n".format(malloc_state.system_mem) + + heap = self.heap + msg += "- Heap ({:#x})\n".format(heap.address) + msg += " chunks_count = {:#x}\n".format(len(heap.chunks)) + msg += " top: addr = {:#x}, size = {:#x}\n".format( + heap.top.address, heap.top.size + ) + + try: + tcaches = self.tcaches + msg += "- Tcaches\n" + msg += "{}\n".format(tcaches.summary()) + except NoTcacheError: + pass + + msg += "- Fast bins\n" + msg += "{}\n".format(self.fast_bins.summary()) + + msg += "- Unsorted bins\n" + msg += "{}\n".format(self.unsorted_bin.summary()) + + msg += "- Small bins\n" + msg += "{}\n".format( + self.small_bins.summary(start_index=SMALL_BINS_START_INDEX) + ) + + msg += "- Large bins\n" + msg += "{}".format( + self.large_bins.summary(start_index=LARGE_BINS_START_INDEX) + ) + + return msg diff --git a/pwnlib/heap/arena/parser.py b/pwnlib/heap/arena/parser.py new file mode 100644 index 000000000..c51fe94fb --- /dev/null +++ b/pwnlib/heap/arena/parser.py @@ -0,0 +1,71 @@ +from .arena import Arena + +class ArenaParser: + """Class to parse the arena items and retrieve Arena objects + + Args: + malloc_state_parser (MallocStateParser) + heap_parser (HeapParser) + bin_parser (BinParser) + fast_bin_parser (FastBinParser) + tcache_parser (TcacheParser) + """ + + def __init__(self, malloc_state_parser, heap_parser, bin_parser, + fast_bin_parser, tcache_parser): + self._malloc_state_parser = malloc_state_parser + self._heap_parser = heap_parser + self._bin_parser = bin_parser + self._fast_bin_parser = fast_bin_parser + self._tcache_parser = tcache_parser + + def parse_all_from_main_malloc_state_address(self, main_malloc_state_address): + """Returns all the arenas of the process from the address of the + main arena malloc state + + Args: + main_malloc_state_address(int): The address of the main arena + malloc state + + Returns: + list of Arena + """ + + malloc_states = self._malloc_state_parser.parse_all_from_main_malloc_state_address( + main_malloc_state_address + ) + return [self.parse_from_malloc_state(malloc_state) for malloc_state in malloc_states] + + def parse_from_malloc_state(self, malloc_state): + """Returns all the arena information based on the malloc state. + + Args: + malloc_state (MallocState) + + Returns: + Arena + """ + heap = self._heap_parser.parse_from_malloc_state(malloc_state) + unsorted_bin = self._bin_parser.parse_unsorted_bin_from_malloc_state( + malloc_state + ) + small_bins = self._bin_parser.parse_small_bins_from_malloc_state( + malloc_state + ) + large_bins = self._bin_parser.parse_large_bins_from_malloc_state( + malloc_state + ) + fast_bins = self._fast_bin_parser.parse_all_from_malloc_state( + malloc_state + ) + tcaches = self._tcache_parser.parse_all_from_malloc_state(malloc_state) + + return Arena( + malloc_state, + heap, + unsorted_bin, + small_bins, + large_bins, + fast_bins, + tcaches + ) diff --git a/pwnlib/heap/bins/tcache/__init__.py b/pwnlib/heap/bins/tcache/__init__.py new file mode 100644 index 000000000..5650261f8 --- /dev/null +++ b/pwnlib/heap/bins/tcache/__init__.py @@ -0,0 +1,3 @@ + +from .error import NoTcacheError +from .parser import * diff --git a/pwnlib/heap/bins/tcache/entry.py b/pwnlib/heap/bins/tcache/entry.py new file mode 100644 index 000000000..bc039436c --- /dev/null +++ b/pwnlib/heap/bins/tcache/entry.py @@ -0,0 +1,11 @@ +from pwnlib.heap.bins.bin import BinEntry + + +class TcacheEntry(BinEntry): + """Class to contain the information of each entry in + tcache_perthread_struct struct. + """ + + def __init__(self, address, fd, chunks_size): + super(TcacheEntry, self).__init__(address, fd, chunks_size=chunks_size) + diff --git a/pwnlib/heap/bins/tcache/error.py b/pwnlib/heap/bins/tcache/error.py new file mode 100644 index 000000000..cbf60b9ab --- /dev/null +++ b/pwnlib/heap/bins/tcache/error.py @@ -0,0 +1,9 @@ + + +class NoTcacheError(Exception): + """Exception raised when tries to access to tcache in glibc when those are + disabled. + """ + + def __init__(self, message="Tcache are not available in the current glibc"): + super(NoTcacheError, self).__init__(message) diff --git a/pwnlib/heap/bins/tcache/parser.py b/pwnlib/heap/bins/tcache/parser.py new file mode 100644 index 000000000..191f7ae5c --- /dev/null +++ b/pwnlib/heap/bins/tcache/parser.py @@ -0,0 +1,87 @@ +from .tcache_per_thread_struct import * +from .tcache import * + + +class TcacheParser: + """Abstract class that defines the public methods of a Tcache + """ + + def parse_all_from_malloc_state(self, malloc_state): + raise NotImplemented() + + +class DisabledTcacheParser: + """Class to use when tcaches are disabled + """ + + def parse_all_from_malloc_state(self, malloc_state): + """Fake method that always returns None + """ + return None + + +class EnabledTcacheParser: + """Class with the logic to parse the chunks of a tcache from raw memory + and create Tcache objects. + + Args: + malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the + heap. + heap_parser (HeapParser): a parser of the heap metadata and chunks. + """ + + def __init__(self, malloc_chunk_parser, heap_parser): + self._process_informer = malloc_chunk_parser.process_informer + self._pointer_size = malloc_chunk_parser.pointer_size + self._malloc_chunk_parser = malloc_chunk_parser + self._tcache_perthread_parser = TcachePerthreadStructParser( + malloc_chunk_parser.process_informer + ) + self._heap_parser = heap_parser + + def are_tcache_enabled(self): + return True + + def parse_all_from_malloc_state(self, malloc_state): + """Returns the tcaches of the arena based on the malloc state + information. + + Args: + malloc_state (MallocState) + + Returns: + list of Tcache + """ + heap_address, _ = self._heap_parser.calculate_heap_address_and_size_from_malloc_state(malloc_state) + return self._parse_all_from_heap_address(heap_address) + + def _parse_all_from_heap_address(self, heap_address): + tcache_perthread_struct_address = heap_address + 0x10 + tcache_perthread = self._tcache_perthread_parser.parse_from_address( + tcache_perthread_struct_address + ) + + tcaches = [] + for entry in tcache_perthread.entries: + tcache = self._parse_from_tcache_entry(entry) + tcaches.append(tcache) + return Tcaches(tcaches) + + def _parse_from_tcache_entry(self, entry): + pointer = entry.fd + addresses = [entry.address] + chunks = [] + while pointer != 0x0 and pointer not in addresses: + addresses.append(pointer) + try: + chunk_base_address = pointer - self._pointer_size*2 + chunk = self._malloc_chunk_parser.parse_from_address( + chunk_base_address + ) + chunks.append(chunk) + pointer = chunk.fd + except OSError: + # to avoid hanging in case some pointer is corrupted + break + + return Tcache(entry, chunks) diff --git a/pwnlib/heap/bins/tcache/tcache.py b/pwnlib/heap/bins/tcache/tcache.py new file mode 100644 index 000000000..5f6d1c822 --- /dev/null +++ b/pwnlib/heap/bins/tcache/tcache.py @@ -0,0 +1,19 @@ +from pwnlib.heap.bins.bin import * + + +class Tcaches(Bins): + pass + + +class Tcache(Bin): + """Class to represent a tcache of the glibc + + Attributes: + bin_entry (TcacheEntry): The entry of tcache_perthread_struct for the + bin. + chunks (list of MallocChunk): The chunks which are inserted in + the tcache. + """ + + def __init__(self, bin_entry, malloc_chunks): + super(Tcache, self).__init__(bin_entry, malloc_chunks) diff --git a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py new file mode 100644 index 000000000..e9ee7d93f --- /dev/null +++ b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py @@ -0,0 +1,94 @@ +from .entry import TcacheEntry + + +class TcachePerthreadStructParser: + """Class with the logic to parsing the tcache_perthread_struct struct + from binary data. + + + Args: + process_informer (ProcessInformer): Helper to perform operations over + memory + + """ + TCACHE_MAX_BINS = 64 + + def __init__(self, process_informer): + self._process_informer = process_informer + self._pointer_size = process_informer.pointer_size + self._unpack_pointer = process_informer.unpack_pointer + self._tcache_perthread_struct_size = self.TCACHE_MAX_BINS + \ + self._pointer_size * \ + self.TCACHE_MAX_BINS + + def parse_from_address(self, address): + """Returns a TcachePerthreadStruct object by parsing the + `tcache_perthread_struct` struct at the given address. + + Args: + address (int): Address of the `tcache_perthread_struct`. + + Returns: + TcachePerthreadStruct + """ + raw_tcache_perthread_struct = self._process_informer.read_memory( + address, + self._tcache_perthread_struct_size + ) + + return self._parse_from_raw(address, raw_tcache_perthread_struct) + + def _parse_from_raw(self, address, raw_tcache_perthread_struct): + counts = [] + for i in range(self.TCACHE_MAX_BINS): + count = raw_tcache_perthread_struct[i] + counts.append(count) + + entries = [] + for i in range(self.TCACHE_MAX_BINS): + index = self.TCACHE_MAX_BINS + i * self._pointer_size + current_address = address + index + fd = self._unpack_pointer( + raw_tcache_perthread_struct[index:index+self._pointer_size] + ) + tcache_chunks_size = self._pointer_size * 3 + i * self._pointer_size * 2 + entries.append( + TcacheEntry(current_address, fd, tcache_chunks_size) + ) + + return TcachePerthreadStruct(address, counts, entries) + + +class TcachePerthreadStruct: + """Class to contain the information of tcache_perthread_struct struct. + + typedef struct tcache_perthread_struct + { + char counts[TCACHE_MAX_BINS]; + tcache_entry *entries[TCACHE_MAX_BINS]; + } tcache_perthread_struct; + + Attributes: + counts (list of int): List with indicative counts of chunks of each + tcache + entries (list of TcacheEntry): One entrie per tcache, + which indicates the address of the first chunk in the bin + + """ + TCACHE_MAX_BINS = 64 + + def __init__(self, address, counts, entries): + self.address = address + self.counts = counts + self.entries = entries + + def __str__(self): + string = "" + for i in range(self.TCACHE_MAX_BINS): + string += "{} [{}] {:#x}\n".format( + i, + self.counts[i], + self.entries[i] + ) + return string + diff --git a/pwnlib/heap/heap/__init__.py b/pwnlib/heap/heap/__init__.py new file mode 100644 index 000000000..5276a1bf6 --- /dev/null +++ b/pwnlib/heap/heap/__init__.py @@ -0,0 +1,3 @@ + +from .heap import * +from .heap_parser import * diff --git a/pwnlib/heap/heap/heap.py b/pwnlib/heap/heap/heap.py new file mode 100644 index 000000000..425d6e554 --- /dev/null +++ b/pwnlib/heap/heap/heap.py @@ -0,0 +1,44 @@ +from pwnlib.heap.basic_formatter import BasicFormatter + + +class Heap: + """Class to represent a heap with some useful metadata. Heap is considered + a collection of chunks. + + Attributes: + address (int): The start address of the heap + chunks (list of MallocChunk): The list of chunks of the heap + top (MallocChunk): The Top chunk of the heap + """ + + def __init__(self, address, malloc_chunks, pointer_size): + self.address = address + self.chunks = malloc_chunks + self._pointer_size = pointer_size + self._basic_formatter = BasicFormatter() + + @property + def top(self): + return self.chunks[-1] + + def __str__(self): + msg = [ + self._basic_formatter.header("Heap ({:#x})".format(self.address)), + self._format_heap(), + self._basic_formatter.footer() + ] + return "\n".join(msg) + + def _format_heap(self): + chunks_str = [ + self._format_chunk_as_str(chunk) for chunk in self.chunks + ] + return "\n".join(chunks_str) + + def _format_chunk_as_str(self, chunk): + flags = chunk.format_flags_as_str() + msg = [ + "{:#x} {:#x} {}".format(chunk.address, chunk.size, flags), + " " + chunk.format_first_bytes_as_hexdump_str() + ] + return "\n".join(msg) diff --git a/pwnlib/heap/heap/heap_info.py b/pwnlib/heap/heap/heap_info.py new file mode 100644 index 000000000..df53c9658 --- /dev/null +++ b/pwnlib/heap/heap/heap_info.py @@ -0,0 +1,75 @@ +from construct import * + + +class HeapInfoParser: + """Class to parse the `heap_info` structure + + Args: + process_informer (ProcessInformer): Helper to perform operations over + memory and obtain info of the process + """ + + def __init__(self, process_informer): + self._process_informer = process_informer + self._pointer_size = process_informer.pointer_size + if self._pointer_size == 8: + pointer_type = Int64ul + else: + pointer_type = Int32ul + + self.heap_info_definition = Struct( + "ar_ptr"/ pointer_type, + "prev"/ pointer_type, + "size" / pointer_type, + "mprotect_size" / pointer_type + ) + + def parse_from_address(self, address): + raw_heap_info = self._process_informer.read_memory( + address, + self.heap_info_definition.sizeof() + ) + return self._parse_from_raw(raw_heap_info) + + def _parse_from_raw(self, raw): + heap_info_collection = self.heap_info_definition.parse(raw) + + return HeapInfo( + ar_ptr=heap_info_collection.ar_ptr, + prev=heap_info_collection.prev, + size=heap_info_collection.size, + mprotect_size=heap_info_collection.mprotect_size + ) + + +class HeapInfo: + """Class with the information of the `heap_info` structure. + + ```c + typedef struct _heap_info + { + mstate ar_ptr; /* Arena for this heap. */ + struct _heap_info *prev; /* Previous heap. */ + size_t size; /* Current size in bytes. */ + size_t mprotect_size; /* Size in bytes that has been mprotected + PROT_READ|PROT_WRITE. */ + /* Make sure the following data is properly aligned, particularly + that sizeof (heap_info) + 2 * SIZE_SZ is a multiple of + MALLOC_ALIGNMENT. */ + char pad[-6 * SIZE_SZ & MALLOC_ALIGN_MASK]; + } heap_info; + ``` + + Attributes: + ar_ptr (int): Address of the arena `malloc_state` structure. + prev (int): Address of the previous heap. + size (int): Size of the heap. + mprotect_size (int): Size of the heap which has benn mprotected with + PROT_READ|PROT_WRITE. + """ + + def __init__(self, ar_ptr, prev, size, mprotect_size): + self.ar_ptr = ar_ptr + self.prev = prev + self.size = size + self.mprotect_size = mprotect_size diff --git a/pwnlib/heap/heap/heap_parser.py b/pwnlib/heap/heap/heap_parser.py new file mode 100644 index 000000000..a211c403b --- /dev/null +++ b/pwnlib/heap/heap/heap_parser.py @@ -0,0 +1,97 @@ +from .heap_info import HeapInfoParser +from pwnlib.heap.utils import align_address +from .heap import Heap + + +class HeapParser: + """Class to parse the chunks of a heap and return a Heap object + + Args: + malloc_chunk_parser (MallocChunkParser): parser for the raw malloc + chunks + malloc_state_parser (MallocStateParser): parser for the raw malloc_state + struct + """ + + def __init__(self, malloc_chunk_parser, malloc_state_parser): + self._process_informer = malloc_chunk_parser.process_informer + self._pointer_size = malloc_chunk_parser.pointer_size + self._malloc_alignment = self._pointer_size * 2 + self._raw_heap_info_size = self._pointer_size * 4 + + self._malloc_chunk_parser = malloc_chunk_parser + self._malloc_state_parser = malloc_state_parser + self._heap_info_parser = HeapInfoParser(self._process_informer) + + def parse_from_malloc_state(self, malloc_state): + """Returns the heap of the arena of the given malloc state + + Args: + malloc_state (MallocState) + + Returns: + Heap + """ + + heap_address, heap_size = self.calculate_heap_address_and_size_from_malloc_state(malloc_state) + return self._parse_from_address(heap_address, heap_size) + + def calculate_heap_address_and_size_from_malloc_state(self, malloc_state): + """Returns the heap start address and heap size, based on the + information of the provided malloc state + + Args: + malloc_state (MallocState) + + Returns: + tuple(int, int) + """ + maps = self._process_informer.maps() + current_heap_map = maps.map_with_address(malloc_state.top) + main_heap_map = maps.heap + + is_main_heap = current_heap_map.address == main_heap_map.address + if is_main_heap: + heap_start_address = current_heap_map.address + else: + heap_start_address = self._calculate_non_main_heap_start_address( + current_heap_map.address + ) + + heap_size = current_heap_map.size - \ + (heap_start_address - current_heap_map.start_address) + return heap_start_address, heap_size + + def _calculate_non_main_heap_start_address(self, heap_map_start_address): + heap_info = self._heap_info_parser.parse_from_address(heap_map_start_address) + heap_start_address = heap_info.ar_ptr + \ + self._malloc_state_parser.raw_malloc_state_size + return align_address(heap_start_address, self._malloc_alignment) + + def _parse_from_address(self, address, size): + raw_heap = self._process_informer.read_memory(address, size) + return self._parse_from_raw(address, raw_heap) + + def _parse_from_raw(self, heap_address, raw_heap): + offset = 0 + chunks = [] + + first_chunk = self._malloc_chunk_parser.parse_from_raw( + heap_address, + raw_heap + ) + + if first_chunk.size == 0: + offset += self._pointer_size*2 + + while offset < len(raw_heap): + current_address = heap_address + offset + chunk = self._malloc_chunk_parser.parse_from_raw( + current_address, + raw_heap[offset:] + ) + offset += chunk.size + chunks.append(chunk) + + return Heap(heap_address, chunks, self._pointer_size) + From 912a5ae1266a4e58409c8649d7d6eb4d0fbc5181 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Wed, 29 Jan 2020 21:59:55 +0100 Subject: [PATCH 012/179] updated MemoryMaps --- pwnlib/heap/memory_maps.py | 301 ------------------------------- pwnlib/heap/process_informer.py | 4 +- pwnlib/util/proc.py | 305 ++++++++++++++++++-------------- 3 files changed, 178 insertions(+), 432 deletions(-) delete mode 100644 pwnlib/heap/memory_maps.py diff --git a/pwnlib/heap/memory_maps.py b/pwnlib/heap/memory_maps.py deleted file mode 100644 index 2fc86bbb8..000000000 --- a/pwnlib/heap/memory_maps.py +++ /dev/null @@ -1,301 +0,0 @@ - -class MemoryMapFlags: - """Object with the information of the flags field of maps described in /proc//maps - - Arguments: - readable(bool): True if map is readable - writable(bool): True if map is writable - executable(bool): True if map can be executed - private(bool): True if map is not shared - - Example: - - >>> m = MemoryMapFlags.from_str('rw-p') - >>> m.readable - True - >>> m.writable - True - >>> m.executable - False - >>> m.private - True - >>> m.shared - False - >>> str(m) - 'rw-p' - """ - - def __init__(self, readable, writable, executable, private): - self.readable = readable - self.writable = writable - self.executable = executable - self.private = private - - @property - def shared(self): - return not self.private - - @classmethod - def from_str(cls, flags_str): - """Generates a MemoryMapFlags object from a flags string. Example: 'r-xp' - - Arguments: - flags_str(str): Flag string with the format contained in /proc/pid/maps - - Returns: - MemoryMapFlags: The object representation of the string - - Example: - - >>> str(MemoryMapFlags.from_str('r-xp')) - 'r-xp' - """ - readable = flags_str[0] == "r" - writable = flags_str[1] == "w" - executable = flags_str[2] == "x" - private = flags_str[3] == "p" - return cls(readable, writable, executable, private) - - def __str__(self): - flags_str = "" - flags_str += "r" if self.readable else "-" - flags_str += "w" if self.writable else "-" - flags_str += "x" if self.executable else "-" - flags_str += "p" if self.private else "s" - return flags_str - - -class MemoryMap: - """Object with the information of the memory maps described in /proc//maps - - Arguments: - start_address(int): The starting address of the map - end_address(int): The ending address of the map - flags(MemoryMapFlags): The flags (read, write, exec, private, shared) of the map - offset(int): Offset of file mapped. 0 if no file - device_major(int): Device major version. 0 if no file - device_minor(int): Device minor version. 0 if no file - inode(int): Inode of the mapped file. 0 if no file - path(str): Path of the mapped file. Empty string if no file - - Example: - - >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") - >>> hex(m.start_address) - '0x55db09b78000' - >>> hex(m.end_address) - '0x55db09b81000' - >>> m.readable - True - >>> m.writable - True - >>> m.executable - False - >>> m.private - True - >>> m.shared - False - >>> hex(m.offset) - '0x114000' - >>> hex(m.device_major) - '0xfe' - >>> hex(m.device_minor) - '0x1' - >>> m.inode - 9832010 - >>> m.path - '/usr/bins/bash' - >>> str(m) - '55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010\\t\\t/usr/bins/bash' - """ - - def __init__(self, start_address, end_address, flags, offset, device_major, device_minor, inode, path): - self.start_address = start_address - self.end_address = end_address - self.flags = flags - self.offset = offset - self.device_major = device_major - self.device_minor = device_minor - self.inode = inode - self.path = path - - @property - def address(self): - return self.start_address - - @property - def size(self): - """The size of the map""" - return self.end_address - self.start_address - - @property - def readable(self): - return self.flags.readable - - @property - def writable(self): - return self.flags.writable - - @property - def executable(self): - return self.flags.executable - - @property - def private(self): - return self.flags.private - - @property - def shared(self): - return self.flags.shared - - def is_in_range(self, address): - """Indicates if the specified addr is in the range of the map - - Arguments: - address (int): Memory address - - Returns: - bool: True if addr is in the map memory range - - Example: - >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") - >>> m.is_in_range(0x55db09b78000) - True - >>> m.is_in_range(0x55db09b81000) - False - >>> >>> m.is_in_range(0x55db09b8200) - True - """ - return self.start_address <= address < self.end_address - - @classmethod - def from_str(cls, map_str): - parts = map_str.split() - - start_address, end_address = parts[0].split("-") - start_address = int(start_address, 16) - end_address = int(end_address, 16) - - flags = MemoryMapFlags.from_str(parts[1]) - - offset = int(parts[2], 16) - - device_major, device_minor = parts[3].split(":") - device_major = int(device_major, 16) - device_minor = int(device_minor, 16) - - inode = int(parts[4]) - - try: - path = parts[5] - except IndexError: - path = "" - - return cls(start_address, end_address, flags, offset, device_major, device_minor, inode, path) - - def __str__(self): - map_str = "" - map_str += "%x-%x" % (self.start_address, self.end_address) - map_str += " %s" % self.flags - map_str += " %08x" % self.offset - map_str += " %02x:%02x" % (self.device_major, self.device_minor) - map_str += " %d" % self.inode - - if self.path: - map_str += "\t\t%s" % self.path - - return map_str - - -class MemoryMaps: - """List of the memory maps described in /proc//maps - - Arguments: - maps(list of MemoryMap): The memory maps - - Example: - - >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /home/zrt/test - ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test - ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test - ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test - ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test - ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] - ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 - ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 - ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] - ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] - ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] - ... \""") - >>> str(maps.heap) - '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' - >>> str(maps.stack) - '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' - >>> len(maps) - 22 - """ - - def __init__(self, maps): - self.maps = maps - - @classmethod - def from_process(cls, pid): - with open('/proc/%s/maps' % pid) as fmap: - maps_raw = fmap.read() - - return cls.from_str(maps_raw) - - @classmethod - def from_str(cls, maps_string): - maps = [MemoryMap.from_str(line) for line in maps_string.splitlines()] - return cls(maps) - - def map_with_address(self, address): - """Returns the map which contains the given address - - Arguments: - address (int): Memory addr - - Returns: - MemoryMap or None: Returns MemoryMap in case some map contains - the address, None otherwise - """ - for map_ in self.maps: - if map_.is_in_range(address): - return map_ - return None - - @property - def heap(self): - for map_ in self.maps: - if map_.path == "[heap]": - return map_ - - @property - def stack(self): - for map_ in self.maps: - if map_.path == "[stack]": - return map_ - - def __str__(self): - return "\n".join([str(map_) for map_ in self.maps]) - - def __len__(self): - return len(self.maps) - - def __getitem__(self, index): - return self.maps[index] - - def __iter__(self): - return iter(self.maps) diff --git a/pwnlib/heap/process_informer.py b/pwnlib/heap/process_informer.py index 2fc9b0c5d..5ab74cb4c 100644 --- a/pwnlib/heap/process_informer.py +++ b/pwnlib/heap/process_informer.py @@ -1,6 +1,6 @@ from .utils import * -from .memory_maps import MemoryMaps import os.path +import pwnlib.util.proc class ProcessInformer: @@ -38,7 +38,7 @@ def read_memory(self, address, size): return mem.read(size) def maps(self): - return MemoryMaps.from_process(self.pid) + return pwnlib.util.proc.MemoryMaps.from_process(self.pid) def is_libc_version_higher_than(self, version): return self.libc_version > version diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 15813f020..014813819 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -342,97 +342,91 @@ def wait_for_debugger(pid): l.success() -class MemoryMaps: - """List of the memory maps described in /proc//maps +class MemoryMapFlags: + """Object with the information of the flags field of maps described in /proc//maps Arguments: - maps(list of MemoryMap): The memory maps - + readable(bool): True if map is readable + writable(bool): True if map is writable + executable(bool): True if map can be executed + private(bool): True if map is not shared + Example: - >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /home/zrt/test - ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test - ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test - ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test - ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test - ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] - ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so - ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 - ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so - ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 - ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] - ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] - ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] - ... \""") - >>> str(maps.heap) - '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' - >>> str(maps.stack) - '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' - >>> len(maps) - 22 + >>> m = MemoryMapFlags.from_str('rw-p') + >>> m.readable + True + >>> m.writable + True + >>> m.executable + False + >>> m.private + True + >>> m.shared + False + >>> str(m) + 'rw-p' """ - def __init__(self, maps): - self.maps = maps - - @classmethod - def from_str(cls, maps_string): - maps = [MemoryMap.from_str(line) for line in maps_string.splitlines()] - return cls(maps) + def __init__(self, readable, writable, executable, private): + self.readable = readable + self.writable = writable + self.executable = executable + self.private = private @property - def heap(self): - for map in self.maps: - if map.path == "[heap]": - return map + def shared(self): + return not self.private - @property - def stack(self): - for map in self.maps: - if map.path == "[stack]": - return map + @classmethod + def from_str(cls, flags_str): + """Generates a MemoryMapFlags object from a flags string. Example: 'r-xp' - def __str__(self): - return "\n".join([str(map) for map in self.maps]) + Arguments: + flags_str(str): Flag string with the format contained in /proc/pid/maps - def __len__(self): - return len(self.maps) - - def __getitem__(self, index): - return self.maps[index] - - def __iter__(self): - return iter(self.maps) + Returns: + MemoryMapFlags: The object representation of the string + + Example: + + >>> str(MemoryMapFlags.from_str('r-xp')) + 'r-xp' + """ + readable = flags_str[0] == "r" + writable = flags_str[1] == "w" + executable = flags_str[2] == "x" + private = flags_str[3] == "p" + return cls(readable, writable, executable, private) + + def __str__(self): + flags_str = "" + flags_str += "r" if self.readable else "-" + flags_str += "w" if self.writable else "-" + flags_str += "x" if self.executable else "-" + flags_str += "p" if self.private else "s" + return flags_str class MemoryMap: """Object with the information of the memory maps described in /proc//maps Arguments: - start_addr(int): The starting address of the map - end_addr(int): The ending address of the map + start_address(int): The starting address of the map + end_address(int): The ending address of the map flags(MemoryMapFlags): The flags (read, write, exec, private, shared) of the map offset(int): Offset of file mapped. 0 if no file device_major(int): Device major version. 0 if no file device_minor(int): Device minor version. 0 if no file inode(int): Inode of the mapped file. 0 if no file path(str): Path of the mapped file. Empty string if no file - + Example: - >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bin/bash") - >>> hex(m.start_addr) + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> hex(m.start_address) '0x55db09b78000' - >>> hex(m.end_addr) + >>> hex(m.end_address) '0x55db09b81000' >>> m.readable True @@ -453,34 +447,38 @@ class MemoryMap: >>> m.inode 9832010 >>> m.path - '/usr/bin/bash' + '/usr/bins/bash' >>> str(m) - '55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010\\t\\t/usr/bin/bash' + '55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010\\t\\t/usr/bins/bash' """ - def __init__(self, start_addr, end_addr, flags, offset, device_major, device_minor, inode, path): - self.start_addr = start_addr - self.end_addr = end_addr + def __init__(self, start_address, end_address, flags, offset, device_major, device_minor, inode, path): + self.start_address = start_address + self.end_address = end_address self.flags = flags self.offset = offset self.device_major = device_major self.device_minor = device_minor self.inode = inode self.path = path - + + @property + def address(self): + return self.start_address + @property def size(self): """The size of the map""" - return self.end_addr - self.start_addr - + return self.end_address - self.start_address + @property def readable(self): return self.flags.readable - + @property def writable(self): return self.flags.writable - + @property def executable(self): return self.flags.executable @@ -493,13 +491,33 @@ def private(self): def shared(self): return self.flags.shared + def is_in_range(self, address): + """Indicates if the specified addr is in the range of the map + + Arguments: + address (int): Memory address + + Returns: + bool: True if addr is in the map memory range + + Example: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> m.is_in_range(0x55db09b78000) + True + >>> m.is_in_range(0x55db09b81000) + False + >>> >>> m.is_in_range(0x55db09b8200) + True + """ + return self.start_address <= address < self.end_address + @classmethod def from_str(cls, map_str): parts = map_str.split() - start_addr, end_addr = parts[0].split("-") - start_addr = int(start_addr, 16) - end_addr = int(end_addr, 16) + start_address, end_address = parts[0].split("-") + start_address = int(start_address, 16) + end_address = int(end_address, 16) flags = MemoryMapFlags.from_str(parts[1]) @@ -516,11 +534,11 @@ def from_str(cls, map_str): except IndexError: path = "" - return cls(start_addr, end_addr, flags, offset, device_major, device_minor, inode, path) + return cls(start_address, end_address, flags, offset, device_major, device_minor, inode, path) def __str__(self): map_str = "" - map_str += "%x-%x" % (self.start_addr, self.end_addr) + map_str += "%x-%x" % (self.start_address, self.end_address) map_str += " %s" % self.flags map_str += " %08x" % self.offset map_str += " %02x:%02x" % (self.device_major, self.device_minor) @@ -531,67 +549,96 @@ def __str__(self): return map_str -class MemoryMapFlags: - """Object with the information of the flags field of maps described in /proc//maps + +class MemoryMaps: + """List of the memory maps described in /proc//maps Arguments: - readable(bool): True if map is readable - writable(bool): True if map is writable - executable(bool): True if map can be executed - private(bool): True if map is not shared - + maps(list of MemoryMap): The memory maps + Example: - >>> m = MemoryMapFlags.from_str('rw-p') - >>> m.readable - True - >>> m.writable - True - >>> m.executable - False - >>> m.private - True - >>> m.shared - False - >>> str(m) - 'rw-p' + >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /home/zrt/test + ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test + ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test + ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] + ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 + ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 + ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] + ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] + ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] + ... \""") + >>> str(maps.heap) + '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' + >>> str(maps.stack) + '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' + >>> len(maps) + 22 """ - def __init__(self, readable, writable, executable, private): - self.readable = readable - self.writable = writable - self.executable = executable - self.private = private + def __init__(self, maps): + self.maps = maps - @property - def shared(self): - return not self.private + @classmethod + def from_process(cls, pid): + with open('/proc/%s/maps' % pid) as fmap: + maps_raw = fmap.read() + + return cls.from_str(maps_raw) @classmethod - def from_str(cls, flags_str): - """Generates a MemoryMapFlags object from a flags string. Example: 'r-xp' + def from_str(cls, maps_string): + maps = [MemoryMap.from_str(line) for line in maps_string.splitlines()] + return cls(maps) - Arguments: - flags_str(str): Flag string with the format contained in /proc/pid/maps - - Returns: - MemoryMapFlags: The object representation of the string + def map_with_address(self, address): + """Returns the map which contains the given address - Example: + Arguments: + address (int): Memory addr - >>> str(MemoryMapFlags.from_str('r-xp')) - 'r-xp' + Returns: + MemoryMap or None: Returns MemoryMap in case some map contains + the address, None otherwise """ - readable = flags_str[0] == "r" - writable = flags_str[1] == "w" - executable = flags_str[2] == "x" - private = flags_str[3] == "p" - return cls(readable, writable, executable, private) + for map_ in self.maps: + if map_.is_in_range(address): + return map_ + return None + + @property + def heap(self): + for map_ in self.maps: + if map_.path == "[heap]": + return map_ + + @property + def stack(self): + for map_ in self.maps: + if map_.path == "[stack]": + return map_ def __str__(self): - flags_str = "" - flags_str += "r" if self.readable else "-" - flags_str += "w" if self.writable else "-" - flags_str += "x" if self.executable else "-" - flags_str += "p" if self.private else "s" - return flags_str + return "\n".join([str(map_) for map_ in self.maps]) + + def __len__(self): + return len(self.maps) + + def __getitem__(self, index): + return self.maps[index] + + def __iter__(self): + return iter(self.maps) From fb89d388232893661b59aed37eb69add8ea3736d Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Wed, 29 Jan 2020 22:11:57 +0100 Subject: [PATCH 013/179] added rst file for heap module --- docs/source/heap.rst | 10 ++++++++++ docs/source/index.rst | 1 + pwnlib/heap/__init__.py | 13 +++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 docs/source/heap.rst diff --git a/docs/source/heap.rst b/docs/source/heap.rst new file mode 100644 index 000000000..ba6e4f791 --- /dev/null +++ b/docs/source/heap.rst @@ -0,0 +1,10 @@ +.. testsetup:: * + + from pwnlib.heap import * + +:mod:`pwnlib.heap` --- Heap explorer +=================================================== + +.. automodule:: pwnlib.heap + :members: + diff --git a/docs/source/index.rst b/docs/source/index.rst index 50b99bc14..2bd659178 100755 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -58,6 +58,7 @@ Each of the ``pwntools`` modules is documented here. flag fmtstr gdb + heap libcdb log memleak diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 28e066d80..f3423ad6d 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -1,2 +1,15 @@ +# -*- coding: utf-8 -*- +""" +During heap exploit development, it is frequently useful to obtain an +image of the several items that compose the heap memory, such as +bins and chunks. + + + +Member Documentation +=============================== +""" + +# TODO: write heap documentation from .heap_explorer import HeapExplorer From 028fd3826aeda537bd1355734189ae0f202e7582 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Thu, 30 Jan 2020 22:07:04 +0100 Subject: [PATCH 014/179] added heap_explorer to heap.rst --- docs/source/heap.rst | 2 ++ pwnlib/heap/__init__.py | 3 +-- pwnlib/heap/heap_explorer.py | 37 ++++++++++++++++++++---------------- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/docs/source/heap.rst b/docs/source/heap.rst index ba6e4f791..2fc4ebce2 100644 --- a/docs/source/heap.rst +++ b/docs/source/heap.rst @@ -8,3 +8,5 @@ .. automodule:: pwnlib.heap :members: +.. autoclass:: pwnlib.heap.HeapExplorer + :members: diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index f3423ad6d..fe52263fe 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- """ During heap exploit development, it is frequently useful to obtain an -image of the several items that compose the heap memory, such as -bins and chunks. +image of the heap layout as well as of the bins used by the glibc. diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index c357771ed..c6fb9d516 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -9,6 +9,11 @@ class HeapExplorer: """Main class of the library. which functions to access to all items of the glibc heap management, such as arenas, malloc_state, heap and bins. + + Attributes: + tcaches_enabled(bool): Indicates if tcaches are enabled for the current + glibc version. + """ def __init__(self, pid, libc): @@ -70,7 +75,7 @@ def malloc_state(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - MallocState + :class:`MallocState` """ return self.all_arenas_malloc_states()[arena_index] @@ -78,7 +83,7 @@ def all_arenas_malloc_states(self): """Returns the malloc states of all arenas Returns: - list of MallocState + list of :class:`MallocState` """ return self._malloc_state_parser.parse_all_from_main_malloc_state_address( self._main_arena_address @@ -92,7 +97,7 @@ def heap(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - Heap + :class:`Heap` """ malloc_state = self.malloc_state(arena_index) return self._heap_parser.parse_from_malloc_state(malloc_state) @@ -101,7 +106,7 @@ def all_arenas_heaps(self): """Returns the heaps of all arenas Returns: - list of Heap + list of :class:`Heap` """ malloc_states = self.all_arenas_malloc_states() heaps = [] @@ -119,7 +124,7 @@ def unsorted_bin(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - UnsortedBin + :class:`UnsortedBins` """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_unsorted_bin_from_malloc_state( @@ -130,7 +135,7 @@ def all_arenas_unsorted_bins(self): """Returns the unsorted bins of all arenas Returns: - list of UnsortedBin + list of :class:`UnsortedBins` """ unsorted_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -149,7 +154,7 @@ def small_bins(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - list of SmallBin + :class:`SmallBins` """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_small_bins_from_malloc_state( @@ -160,7 +165,7 @@ def all_arenas_small_bins(self): """Returns the small bins of all arenas Returns: - list of list of SmallBin + list of :class:`SmallBins` """ all_small_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -179,7 +184,7 @@ def large_bins(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - list of LargeBin + :class:`LargeBins` """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_large_bins_from_malloc_state( @@ -190,7 +195,7 @@ def all_arenas_large_bins(self): """Returns the large bins of all arenas Returns: - list of list of LargeBin + list of :class:`LargeBins` """ all_large_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -209,7 +214,7 @@ def fast_bins(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - list of FastBin + :class:`FastBins` """ malloc_state = self.malloc_state(arena_index) return self._fast_bin_parser.parse_all_from_malloc_state(malloc_state) @@ -218,7 +223,7 @@ def all_arenas_fast_bins(self): """Returns the small bins of all arenas Returns: - list of list of FastBin + list of :class:`FastBin` """ malloc_states = self.all_arenas_malloc_states() all_fast_bins = [] @@ -236,7 +241,7 @@ def tcaches(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - list of Tcache + :class:`Tcache` """ if not self.tcaches_enabled: raise NoTcacheError() @@ -248,7 +253,7 @@ def all_arenas_tcaches(self): """Returns the tcaches of all arenas Returns: - list of list of Tcache + list of :class:`Tcache` """ if not self.tcaches_enabled: raise NoTcacheError() @@ -269,7 +274,7 @@ def arena(self, arena_index=0): is specified, then the index of the main arena will be selected Returns: - Arena + :class:`Arena` """ malloc_state = self.malloc_state(arena_index) return self._arena_parser.parse_from_malloc_state(malloc_state) @@ -278,7 +283,7 @@ def all_arenas(self): """Returns all arenas Returns: - list of Arena + list of :class:`Arena` """ return self._arena_parser.parse_all_from_main_malloc_state_address( self._main_arena_address From af2dda76137b538321621fb8c791c3d29d467536 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Thu, 30 Jan 2020 22:10:33 +0100 Subject: [PATCH 015/179] removed arguments from HeapExplorer in heap.rst --- docs/source/heap.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/heap.rst b/docs/source/heap.rst index 2fc4ebce2..7821c8955 100644 --- a/docs/source/heap.rst +++ b/docs/source/heap.rst @@ -8,5 +8,5 @@ .. automodule:: pwnlib.heap :members: -.. autoclass:: pwnlib.heap.HeapExplorer +.. autoclass:: pwnlib.heap.HeapExplorer() :members: From 3f633241af93ed5138d633d19ec21de87f0ed628 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Thu, 30 Jan 2020 22:33:45 +0100 Subject: [PATCH 016/179] added malloc_chunk to heap documentation --- docs/source/heap.rst | 9 +++++++++ docs/source/heap/malloc_chunk.rst | 9 +++++++++ pwnlib/heap/malloc_chunk.py | 22 ++++++++++++---------- 3 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 docs/source/heap/malloc_chunk.rst diff --git a/docs/source/heap.rst b/docs/source/heap.rst index 7821c8955..58278ad76 100644 --- a/docs/source/heap.rst +++ b/docs/source/heap.rst @@ -8,5 +8,14 @@ .. automodule:: pwnlib.heap :members: +Heap Items +------------- +.. toctree:: + :maxdepth: 3 + :glob: + + heap/* + + .. autoclass:: pwnlib.heap.HeapExplorer() :members: diff --git a/docs/source/heap/malloc_chunk.rst b/docs/source/heap/malloc_chunk.rst new file mode 100644 index 000000000..05a533c11 --- /dev/null +++ b/docs/source/heap/malloc_chunk.rst @@ -0,0 +1,9 @@ +.. testsetup:: * + + from pwnlib.heap.malloc_chunk import * + +:mod:`pwnlib.heap.malloc_chunk` --- Chunks with metadata managed by libc +======================================================================== + +.. autoclass:: pwnlib.heap.malloc_chunk.MallocChunk() + :members: diff --git a/pwnlib/heap/malloc_chunk.py b/pwnlib/heap/malloc_chunk.py index cf7b9b847..39b8d6bc3 100644 --- a/pwnlib/heap/malloc_chunk.py +++ b/pwnlib/heap/malloc_chunk.py @@ -95,16 +95,18 @@ class MallocChunk: """Class to represent the information contained in the malloc_chunk struct of the glibc. - ```c - struct malloc_chunk { - INTERNAL_SIZE_T mchunk_prev_size; - INTERNAL_SIZE_T mchunk_size; - struct malloc_chunk* fd; - struct malloc_chunk* bk; - struct malloc_chunk* fd_nextsize; - struct malloc_chunk* bk_nextsize; - }; - ``` + .. highlight:: c + .. code-block:: c + + struct malloc_chunk { + INTERNAL_SIZE_T mchunk_prev_size; + INTERNAL_SIZE_T mchunk_size; + struct malloc_chunk* fd; + struct malloc_chunk* bk; + struct malloc_chunk* fd_nextsize; + struct malloc_chunk* bk_nextsize; + }; + Attributes: address (int): The start address of the chunk From 9d75ac5c76b5336d2fbf8c7867ba4f013aad36f6 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Thu, 30 Jan 2020 22:40:08 +0100 Subject: [PATCH 017/179] added heap class to heap documentation --- docs/source/heap.rst | 3 ++- docs/source/heap/heap.rst | 9 +++++++++ pwnlib/heap/__init__.py | 4 ---- pwnlib/heap/heap/heap.py | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 docs/source/heap/heap.rst diff --git a/docs/source/heap.rst b/docs/source/heap.rst index 58278ad76..68ce3e76d 100644 --- a/docs/source/heap.rst +++ b/docs/source/heap.rst @@ -16,6 +16,7 @@ Heap Items heap/* - +Heap Explorer +--------------- .. autoclass:: pwnlib.heap.HeapExplorer() :members: diff --git a/docs/source/heap/heap.rst b/docs/source/heap/heap.rst new file mode 100644 index 000000000..e6983baa4 --- /dev/null +++ b/docs/source/heap/heap.rst @@ -0,0 +1,9 @@ +.. testsetup:: * + + from pwnlib.heap.heap import * + +:mod:`pwnlib.heap.heap` --- Heap managed by the libc +======================================================================== + +.. autoclass:: pwnlib.heap.heap.Heap() + :members: diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index fe52263fe..637886a8f 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -3,10 +3,6 @@ During heap exploit development, it is frequently useful to obtain an image of the heap layout as well as of the bins used by the glibc. - - -Member Documentation -=============================== """ # TODO: write heap documentation diff --git a/pwnlib/heap/heap/heap.py b/pwnlib/heap/heap/heap.py index 425d6e554..e7305c703 100644 --- a/pwnlib/heap/heap/heap.py +++ b/pwnlib/heap/heap/heap.py @@ -7,7 +7,7 @@ class Heap: Attributes: address (int): The start address of the heap - chunks (list of MallocChunk): The list of chunks of the heap + chunks (list of :class:`MallocChunk`): The list of chunks of the heap top (MallocChunk): The Top chunk of the heap """ From 7cb4eeda03ffe93138701925f9840b1f7011c51c Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Thu, 30 Jan 2020 23:14:01 +0100 Subject: [PATCH 018/179] added malloc state to the documentation --- docs/source/heap/malloc_state.rst | 16 ++++ pwnlib/heap/malloc_state/bins/bins.py | 2 +- pwnlib/heap/malloc_state/fastbinsy.py | 9 -- .../malloc_state/malloc_state/malloc_state.py | 83 +++++++++++-------- 4 files changed, 64 insertions(+), 46 deletions(-) create mode 100644 docs/source/heap/malloc_state.rst diff --git a/docs/source/heap/malloc_state.rst b/docs/source/heap/malloc_state.rst new file mode 100644 index 000000000..6bbc34d5a --- /dev/null +++ b/docs/source/heap/malloc_state.rst @@ -0,0 +1,16 @@ +.. testsetup:: * + + from pwnlib.heap.malloc_state import * + +:mod:`pwnlib.heap.malloc_state` --- Malloc state of each arena of the libc +========================================================================== + +.. autoclass:: pwnlib.heap.malloc_state.MallocState() + :members: + +.. autoclass:: pwnlib.heap.malloc_state.FastBinsY() + :members: + +.. autoclass:: pwnlib.heap.malloc_state.Bins() + :members: + diff --git a/pwnlib/heap/malloc_state/bins/bins.py b/pwnlib/heap/malloc_state/bins/bins.py index 3f27558bc..b309212e7 100644 --- a/pwnlib/heap/malloc_state/bins/bins.py +++ b/pwnlib/heap/malloc_state/bins/bins.py @@ -2,7 +2,7 @@ class Bins: - """Class to represent the `bins` attribute of malloc_state struct + """Class to represent the `bins` attribute of malloc_state struct. Attributes: entries (list of BinEntry): pointers to the first chunks of the each diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/malloc_state/fastbinsy.py index d439360f0..04a6df2d0 100644 --- a/pwnlib/heap/malloc_state/fastbinsy.py +++ b/pwnlib/heap/malloc_state/fastbinsy.py @@ -48,15 +48,6 @@ class FastBinsY: def __init__(self, entries): self.entries = entries - def base_address(self): - return self.entries[0].address - - def address(self, index): - return self.entries[index].address - - def fd(self, index): - return self.entries[index].fd - def __getitem__(self, index): return self.entries[index] diff --git a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py index 2d0c7fda9..a7270d3b1 100644 --- a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py +++ b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py @@ -2,46 +2,57 @@ class MallocState: - """ - Representation of the glibc struct malloc_state - - ```c - struct malloc_state - { - __libc_lock_define (, mutex); - int flags; - int have_fastchunks; - mfastbinptr fastbinsY[NFASTBINS]; - mchunkptr top; - mchunkptr last_remainder; - mchunkptr bins[NBINS * 2 - 2]; - unsigned int binmap[BINMAPSIZE]; - struct malloc_state *next; - struct malloc_state *next_free; - INTERNAL_SIZE_T attached_threads; - INTERNAL_SIZE_T system_mem; - INTERNAL_SIZE_T max_system_mem; - }; - ``` + """Representation of the glibc malloc_state struct. + + + Here is the definition of the malloc_state struct in libc 2.27: + + .. highlight:: c + .. code-block:: c + + struct malloc_state + { + __libc_lock_define (, mutex); + int flags; + int have_fastchunks; + mfastbinptr fastbinsY[NFASTBINS]; + mchunkptr top; + mchunkptr last_remainder; + mchunkptr bins[NBINS * 2 - 2]; + unsigned int binmap[BINMAPSIZE]; + struct malloc_state *next; + struct malloc_state *next_free; + INTERNAL_SIZE_T attached_threads; + INTERNAL_SIZE_T system_mem; + INTERNAL_SIZE_T max_system_mem; + }; Notes: - The field have_fastchunks was introduced in glibc version 2.27. In that - case, in this class that field value will be None. + The field have_fastchunks was introduced in libc version 2.27. In case + libc version is inferior that field value will be None. + + The field attached_threads was introduced in libc version 2.23. In case + libc version is inferior that field value will be None. Attributes: - mutex (int): - flags (int): - have_fastchunks (int or None): - fastbinsY (FastBinsY): - top (int): - last_remainder (int): - bins (Bins): - binmap (list[4] of int): - next (int): - next_free (int): - attached_threads (int): - system_mem (int): - max_system_mem (int): + mutex (int): Mutex value of the malloc_state + flags (int): Flags of the malloc_state + have_fastchunks (int or None): Indicates if there are chunks in the + fastbins + fastbinsY (FastBinsY): Fast bin entries + top (int): Pointer to the top chunk of the heap + last_remainder (int): Pointer to the last remainder chunk + bins (Bins): All bins entries of the malloc_state (Unsorted, Small and + Large) + unsorted_bin (BinEntry): Unsorted bin entry of the malloc_state + small_bins (list of BinEntry): Small bins entries of the malloc_state + large_bins (list of BinEntry): Large bins entries of the malloc_state + binmap (list[4] of int): Bitmap which indicates the bins with chunks + next (int): Address of the next malloc_state struct + next_free (int or None): + attached_threads (int): Number of threads attached to the arena + system_mem (int): Available heap size + max_system_mem (int): Maximum heap size """ def __init__(self, address, mutex, flags, have_fastchunks, From 9b8eab15065ab1921e17dadc8564d5986ddaffaf Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 17:49:13 +0100 Subject: [PATCH 019/179] added property attributes to malloc_stat Bins docstring --- pwnlib/heap/__init__.py | 8 ++++++++ pwnlib/heap/malloc_state/bins/bins.py | 22 +++++++--------------- pwnlib/heap/malloc_state/fastbinsy.py | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 637886a8f..83e938bfe 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -6,5 +6,13 @@ """ # TODO: write heap documentation +# * Tcaches +# * Fast bins +# * Unsorted bin +# * Small bins +# * Large bins +# * Arena +# * Use examples +# * Memory Maps from .heap_explorer import HeapExplorer diff --git a/pwnlib/heap/malloc_state/bins/bins.py b/pwnlib/heap/malloc_state/bins/bins.py index b309212e7..b326c1511 100644 --- a/pwnlib/heap/malloc_state/bins/bins.py +++ b/pwnlib/heap/malloc_state/bins/bins.py @@ -5,8 +5,13 @@ class Bins: """Class to represent the `bins` attribute of malloc_state struct. Attributes: - entries (list of BinEntry): pointers to the first chunks of the each - double linked bin. + entries (list of :class:`BinEntry`): entries with pointers to the first + and last chunks of the each double linked bin. + unsorted_bin_entry (:class:`BinEntry`): entry of the unsorted bin. + small_bins_entries (list of :class:`BinEntry`): entries of the small + bins. + large_bins_entries (list of :class:`BinEntry`): entries of the large + bins. """ def __init__(self, entries): @@ -24,19 +29,6 @@ def small_bins_entries(self): def large_bins_entries(self): return self.entries[LARGE_BINS_START_INDEX:] - @property - def base_address(self): - return self.address(0) - - def address(self, index): - return self.entries[index].address - - def fd(self, index): - return self.entries[index].fd - - def bk(self, index): - return self.entries[index].bk - def __getitem__(self, index): return self.entries[index] diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/malloc_state/fastbinsy.py index 04a6df2d0..382f02201 100644 --- a/pwnlib/heap/malloc_state/fastbinsy.py +++ b/pwnlib/heap/malloc_state/fastbinsy.py @@ -41,8 +41,8 @@ class FastBinsY: """Class to represent the `fastbinsY` attribute of malloc_state struct. Attributes: - entries (list of FastBinEntry): pointers to the first chunks of the each - fast bin. + entries (list of :class:`FastBinEntry`): pointers to the first chunks + of the each fast bin. """ def __init__(self, entries): From 50b7d9170af1042b43cb92b7918ebeed59e07e4f Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 18:06:22 +0100 Subject: [PATCH 020/179] added bins classes to documentation --- docs/source/heap/bins.rst | 76 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 docs/source/heap/bins.rst diff --git a/docs/source/heap/bins.rst b/docs/source/heap/bins.rst new file mode 100644 index 000000000..f7ba1adbc --- /dev/null +++ b/docs/source/heap/bins.rst @@ -0,0 +1,76 @@ +.. testsetup:: * + + from pwnlib.heap.bins import * + +:mod:`pwnlib.heap.bins` --- Bins of the libc (Tcaches, Fasts, Unsorted, Smalls and Larges) +============================================================================================ + +.. autoclass:: pwnlib.heap.bins.bin.Bins() + :members: + +.. autoclass:: pwnlib.heap.bins.bin.Bin() + :members: + +.. autoclass:: pwnlib.heap.bins.bin.BinEntry() + :members: + +.. autoclass:: pwnlib.heap.bins.Tcaches() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.Tcache() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.TcacheEntry() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.FastBins() + :members: + :show-inheritance: + + +.. autoclass:: pwnlib.heap.bins.FastBin() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.FastBinEntry() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.UnsortedBins() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.UnsortedBin() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.UnsortedBinEntry() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.SmallBins() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.SmallBin() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.SmallBinEntry() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.LargeBins() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.LargeBin() + :members: + :show-inheritance: + +.. autoclass:: pwnlib.heap.bins.LargeBinEntry() + :members: + :show-inheritance: From 9e68270e0aa8e780450e9cfcf14600501839f9a7 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 18:55:56 +0100 Subject: [PATCH 021/179] added override of bins type in bins documentation --- pwnlib/heap/bins/bin.py | 10 +++++----- pwnlib/heap/bins/fast_bin.py | 5 +++++ pwnlib/heap/bins/large_bin.py | 5 +++++ pwnlib/heap/bins/small_bin.py | 5 +++++ pwnlib/heap/bins/tcache/tcache.py | 6 ++++++ pwnlib/heap/bins/unsorted_bin.py | 7 +++++++ 6 files changed, 33 insertions(+), 5 deletions(-) diff --git a/pwnlib/heap/bins/bin.py b/pwnlib/heap/bins/bin.py index a6b6e3ac7..6b83244f5 100644 --- a/pwnlib/heap/bins/bin.py +++ b/pwnlib/heap/bins/bin.py @@ -2,12 +2,12 @@ class Bins(object): - """Base class to be inherit by the bins collections. This class provides + """Base class to be inherit by the bins sequences. This class provides the methods to access the bins array as well as standard implementation of the __str__ method. Attributes: - bins (list of Bin): The bins of the collection. + bins (:obj:`list` of :class:`Bin`): The bins of the sequence. """ def __init__(self, bins): @@ -78,9 +78,9 @@ class Bin(object): fd (int): Shortcut to the fd pointer of the entry of the current bin. bk (int): Shortcut to the bk pointer of the entry of the current bin. chunks_size (int): Size which should have the chunks in the bin. - malloc_chunks (list of MallocChunk): The chunks which are inserted in - the bin. - chunks (list of MallocChunk): Alias for malloc_chunks. + malloc_chunks (:obj:`list` of :class:`MallocChunk`): The chunks which are + inserted in the bin. + chunks (:obj:`list` of :class:`MallocChunk`): Alias for malloc_chunks. """ def __init__(self, bin_entry, malloc_chunks): diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index ae0ed8a69..692358130 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -49,6 +49,11 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): class FastBins(Bins): + """Sequence of fast bins. + + Attributes: + bins (:obj:`list` of :class:`FastBin`): The bins of the sequence. + """ def _name(self): return "Fast Bins" diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/bins/large_bin.py index ddbae031e..cd4b8734c 100644 --- a/pwnlib/heap/bins/large_bin.py +++ b/pwnlib/heap/bins/large_bin.py @@ -2,6 +2,11 @@ class LargeBins(Bins): + """Sequence of large bins. + + Attributes: + bins (:obj:`list` of :class:`LargeBin`): The bins of the sequence. + """ def _name(self): return "Large Bins" diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/bins/small_bin.py index 2f578a03e..d98174879 100644 --- a/pwnlib/heap/bins/small_bin.py +++ b/pwnlib/heap/bins/small_bin.py @@ -2,6 +2,11 @@ class SmallBins(Bins): + """Sequence of small bins. + + Attributes: + bins (:obj:`list` of :class:`SmallBin`): The bins of the sequence. + """ def _name(self): return "Small Bins" diff --git a/pwnlib/heap/bins/tcache/tcache.py b/pwnlib/heap/bins/tcache/tcache.py index 5f6d1c822..a80a50dd5 100644 --- a/pwnlib/heap/bins/tcache/tcache.py +++ b/pwnlib/heap/bins/tcache/tcache.py @@ -2,6 +2,12 @@ class Tcaches(Bins): + """Sequence of tcache bins. + + Attributes: + bins (:obj:`list` of :class:`Tcache`): The bins of the sequence. + + """ pass diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py index cd55e4112..5a2e3a775 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -2,6 +2,13 @@ class UnsortedBins(Bins): + """Sequence of unsorted bins. There is only 1 bin in this sequence, however + it is encapsulated in this class for compatibility with the other bin + types. + + Attributes: + bins (:obj:`list` of :class:`UnsortedBin`): The bins of the sequence. + """ def __init__(self, bin): super(UnsortedBins, self).__init__([bin]) From da016330c130377ad2a732be4de8b845220b6188 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 19:05:52 +0100 Subject: [PATCH 022/179] added explanation for non used types in bins entries --- pwnlib/heap/bins/fast_bin.py | 3 +++ pwnlib/heap/bins/tcache/entry.py | 4 ++++ pwnlib/heap/bins/unsorted_bin.py | 7 +++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index 692358130..20aed6034 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -85,6 +85,9 @@ def _name(self): class FastBinEntry(BinEntry): """Class to contain the information of a entry in `fastbinsY` attribute of `malloc_state` struct. + + Attributes: + bk (int): 0 since it is not used. """ def __init__(self, address, fd, chunks_size): diff --git a/pwnlib/heap/bins/tcache/entry.py b/pwnlib/heap/bins/tcache/entry.py index bc039436c..d5401ebfc 100644 --- a/pwnlib/heap/bins/tcache/entry.py +++ b/pwnlib/heap/bins/tcache/entry.py @@ -4,8 +4,12 @@ class TcacheEntry(BinEntry): """Class to contain the information of each entry in tcache_perthread_struct struct. + + Attributes: + bk (int): 0 since it is not used. """ + def __init__(self, address, fd, chunks_size): super(TcacheEntry, self).__init__(address, fd, chunks_size=chunks_size) diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py index 5a2e3a775..54451d6bc 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -3,8 +3,8 @@ class UnsortedBins(Bins): """Sequence of unsorted bins. There is only 1 bin in this sequence, however - it is encapsulated in this class for compatibility with the other bin - types. + it is encapsulated in this class for compatibility with the other bin + types. Attributes: bins (:obj:`list` of :class:`UnsortedBin`): The bins of the sequence. @@ -43,6 +43,9 @@ def _name(self): class UnsortedBinEntry(BinEntry): """Class to contain the information of a unsorted bin entry in `bins` of malloc state. + + Attributes: + chunks_size (int): 0 since any size is allowed. """ def __init__(self, address, fd, bk): From 804febc1efe9cb519fa58c50d64a8d95f4bf9d31 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 19:14:24 +0100 Subject: [PATCH 023/179] added the type of each bin entry for each bin type --- pwnlib/heap/bins/bin.py | 3 ++- pwnlib/heap/bins/fast_bin.py | 3 +++ pwnlib/heap/bins/large_bin.py | 5 ++++- pwnlib/heap/bins/small_bin.py | 5 ++++- pwnlib/heap/bins/tcache/tcache.py | 2 -- pwnlib/heap/bins/unsorted_bin.py | 4 ++++ 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/pwnlib/heap/bins/bin.py b/pwnlib/heap/bins/bin.py index 6b83244f5..3447002e8 100644 --- a/pwnlib/heap/bins/bin.py +++ b/pwnlib/heap/bins/bin.py @@ -74,7 +74,8 @@ class Bin(object): of the bin entry as well as the chunks of the bin. Attributes: - bin_entry (BinEntry): The entry of malloc_state.bins for the bin. + bin_entry (BinEntry): The entry of malloc_state or + tcache_perthread_struct for the bin. fd (int): Shortcut to the fd pointer of the entry of the current bin. bk (int): Shortcut to the bk pointer of the entry of the current bin. chunks_size (int): Size which should have the chunks in the bin. diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index 20aed6034..229a7c18a 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -61,6 +61,9 @@ def _name(self): class FastBin(Bin): """Class to represent a fast bin of the glibc. + + Attributes: + bin_entry (FastBinEntry): The entry of malloc_state for the fast bin. """ def __init__(self, bin_entry, malloc_chunks): diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/bins/large_bin.py index cd4b8734c..f283f52c9 100644 --- a/pwnlib/heap/bins/large_bin.py +++ b/pwnlib/heap/bins/large_bin.py @@ -13,7 +13,10 @@ def _name(self): class LargeBin(Bin): - """Class to represent an large bin of the glibc + """Class to represent an large bin of the glibc. + + Attributes: + bin_entry (LargeBinEntry): The entry of malloc_state for the large bin. """ def __init__(self, bin_entry, malloc_chunks): diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/bins/small_bin.py index d98174879..b5932ee58 100644 --- a/pwnlib/heap/bins/small_bin.py +++ b/pwnlib/heap/bins/small_bin.py @@ -13,7 +13,10 @@ def _name(self): class SmallBin(Bin): - """Class to represent an small bin of the glibc + """Class to represent an small bin of the glibc. + + Attributes: + bin_entry (SmallBinEntry): The entry of malloc_state for the small bin. """ def __init__(self, bin_entry, malloc_chunks): diff --git a/pwnlib/heap/bins/tcache/tcache.py b/pwnlib/heap/bins/tcache/tcache.py index a80a50dd5..cf506e6de 100644 --- a/pwnlib/heap/bins/tcache/tcache.py +++ b/pwnlib/heap/bins/tcache/tcache.py @@ -17,8 +17,6 @@ class Tcache(Bin): Attributes: bin_entry (TcacheEntry): The entry of tcache_perthread_struct for the bin. - chunks (list of MallocChunk): The chunks which are inserted in - the tcache. """ def __init__(self, bin_entry, malloc_chunks): diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py index 54451d6bc..13d5b4df6 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -19,6 +19,10 @@ def _name(self): class UnsortedBin(Bin): """Class to represent an unsorted bin of the glibc + + Attributes: + bin_entry (UnsortedBinEntry): The entry of malloc_state for the unsorted + bin. """ def __init__(self, bin_entry, malloc_chunks): From 0077874790cb01c042f1d13d008a25cba2866295 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 19:24:02 +0100 Subject: [PATCH 024/179] added headers to separate each bin type --- docs/source/heap/bins.rst | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/docs/source/heap/bins.rst b/docs/source/heap/bins.rst index f7ba1adbc..1e854d2a3 100644 --- a/docs/source/heap/bins.rst +++ b/docs/source/heap/bins.rst @@ -2,8 +2,13 @@ from pwnlib.heap.bins import * -:mod:`pwnlib.heap.bins` --- Bins of the libc (Tcaches, Fasts, Unsorted, Smalls and Larges) -============================================================================================ +:mod:`pwnlib.heap.bins` --- Bins of the libc +============================================= + +Bins (abstract classes) +------------------------ +Classes with generic behaviour that are inherit by the all +the bins types. .. autoclass:: pwnlib.heap.bins.bin.Bins() :members: @@ -14,6 +19,12 @@ .. autoclass:: pwnlib.heap.bins.bin.BinEntry() :members: +Tcaches +-------- +Classes to represent the tcache bins of the libc. Tcaches were +incorporated in libc 2.26, therefore this classes are only +used if the current libc version of the process is at least 2.26. + .. autoclass:: pwnlib.heap.bins.Tcaches() :members: :show-inheritance: @@ -26,6 +37,11 @@ :members: :show-inheritance: + +Fast bins +---------- +Classes to represent the tcache bins of the libc. + .. autoclass:: pwnlib.heap.bins.FastBins() :members: :show-inheritance: @@ -39,6 +55,10 @@ :members: :show-inheritance: +Unsorted bin +-------------- +Classes to represent the unsorted bin of the libc. + .. autoclass:: pwnlib.heap.bins.UnsortedBins() :members: :show-inheritance: @@ -51,6 +71,10 @@ :members: :show-inheritance: +Small bins +------------ +Classes to represent the small bins of the libc. + .. autoclass:: pwnlib.heap.bins.SmallBins() :members: :show-inheritance: @@ -63,6 +87,10 @@ :members: :show-inheritance: +Large bins +------------ +Classes to represent the large bins of the libc. + .. autoclass:: pwnlib.heap.bins.LargeBins() :members: :show-inheritance: From 4dab1b30d0e5fbf17de142ea3858f7f86db693b7 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 19:53:35 +0100 Subject: [PATCH 025/179] added documentation for the arena to the rst files --- docs/source/heap/arena.rst | 13 +++++++++++++ pwnlib/heap/arena/arena.py | 18 ++++++++++-------- pwnlib/heap/arena/parser.py | 1 + pwnlib/heap/bins/tcache/error.py | 6 +++--- 4 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 docs/source/heap/arena.rst diff --git a/docs/source/heap/arena.rst b/docs/source/heap/arena.rst new file mode 100644 index 000000000..6694ccbb8 --- /dev/null +++ b/docs/source/heap/arena.rst @@ -0,0 +1,13 @@ +.. testsetup:: * + + from pwnlib.heap.arena import * + +:mod:`pwnlib.heap.arena` --- Arena of libc +======================================================================== + +.. autoclass:: pwnlib.heap.arena.Arena() + :members: + +.. autoclass:: pwnlib.heap.bins.tcache.NoTcacheError() + :members: + :show-inheritance: diff --git a/pwnlib/heap/arena/arena.py b/pwnlib/heap/arena/arena.py index 5383d756f..473325b90 100644 --- a/pwnlib/heap/arena/arena.py +++ b/pwnlib/heap/arena/arena.py @@ -4,16 +4,18 @@ class Arena(object): - """Class with the information of the arena + """Class with the information of the arena. Attributes: - malloc_state (MallocState) - heap (Heap) - tcaches (list of Tcaches) - fast_bins (list of FastBin) - unsorted_bin (UnsortedBin) - small_bins (list of SmallBin) - large_bins (list of LargeBin) + malloc_state (MallocState): The malloc_state struct of the arena + heap (Heap): The heap of the arena + tcaches (Tcaches): The tcaches of the arena. If + tcaches are not available, an exception :class:`NoTcacheError` is + raised + fast_bins (FastBins): The fast bins of the arena + unsorted_bin (UnsortedBins): The unsorted bin of the arena + small_bins (SmallBins): The small bins of the arena + large_bins (LargeBins): The large bins of the arena """ def __init__(self, malloc_state, heap, unsorted_bin, diff --git a/pwnlib/heap/arena/parser.py b/pwnlib/heap/arena/parser.py index c51fe94fb..165735d21 100644 --- a/pwnlib/heap/arena/parser.py +++ b/pwnlib/heap/arena/parser.py @@ -1,5 +1,6 @@ from .arena import Arena + class ArenaParser: """Class to parse the arena items and retrieve Arena objects diff --git a/pwnlib/heap/bins/tcache/error.py b/pwnlib/heap/bins/tcache/error.py index cbf60b9ab..f22d1158b 100644 --- a/pwnlib/heap/bins/tcache/error.py +++ b/pwnlib/heap/bins/tcache/error.py @@ -1,9 +1,9 @@ class NoTcacheError(Exception): - """Exception raised when tries to access to tcache in glibc when those are - disabled. + """Exception raised when tries to access to tcaches and these are + unavailable in the current libc. """ - def __init__(self, message="Tcache are not available in the current glibc"): + def __init__(self, message="Tcache are not available in the current libc"): super(NoTcacheError, self).__init__(message) From 91741c518e2022bf4f7c80cab3f417c2ec611b3f Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 21:25:13 +0100 Subject: [PATCH 026/179] added heap module use examples --- pwnlib/heap/__init__.py | 314 +++++++++++++++++++++++++++++++++++ pwnlib/heap/heap_explorer.py | 63 +++++++ pwnlib/tubes/process.py | 6 + 3 files changed, 383 insertions(+) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 83e938bfe..82935172a 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -3,6 +3,320 @@ During heap exploit development, it is frequently useful to obtain an image of the heap layout as well as of the bins used by the glibc. + +To provide access to the heap items, an :class:`HeapExplorer` has to be used, +which can be obtained from :attr:`pwnlib.tubes.process.heap_explorer` + +Examples +---------- + +Get a summary of the items of the arena: + + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.arena().summary()) # doctest: +SKIP + ========================== Arena ========================== + - Malloc State (0x7fad3f0a5c40) + top = 0x564c90e90f20 + last_remainder = 0x0 + next = 0x7fad3f0a5c40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x564c90e83000) + chunks_count = 0x245 + top: addr = 0x564c90e90f20, size = 0x130e0 + - Tcaches + [23] 0x188 (1) + [41] 0x2a8 (1) + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + =========================================================== + +View the malloc state: + + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.malloc_state()) # doctest: +SKIP + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ....... + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ...... + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ + + +List the chunks of the bins: + + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.tcaches()) # doctest: +SKIP + =================================== Tcaches =================================== + [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 + [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.fast_bins()) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 + 5100ba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.unsorted_bin()) # doctest: +SKIP + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 + 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 + ================================================================================ + >>> print(hp.small_bins()) # doctest: +SKIP + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + >>> print(hp.large_bins()) # doctest: +SKIP + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ + + + +List the chunks of the arena heap: + + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.heap()) # doctest: +SKIP + ============================ Heap (0x555635100000) ============================ + 0x555635100000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x555635100660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100780 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351008a0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 10 00 10 35 56 55 00 00 ...........5VU.. + 0x555635100900 0x60 PREV_IN_USE + b0 08 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100960 0x60 PREV_IN_USE + 10 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x5556351009c0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100a20 0x60 PREV_IN_USE + 70 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 p..5VU.....5VU.. + 0x555635100a80 0x60 PREV_IN_USE + 30 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 0..5VU.....5VU.. + 0x555635100ae0 0x60 PREV_IN_USE + 90 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100b40 0x60 PREV_IN_USE + f0 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100ba0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c00 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c20 0x60 PREV_IN_USE + a0 0b 10 35 56 55 00 00 00 00 00 00 00 00 00 00 ...5VU.......... + 0x555635100c80 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100ca0 0x1010 PREV_IN_USE + a0 9c 6e d6 8b 7f 00 00 40 1d 10 35 56 55 00 00 ..n.....@..5VU.. + 0x555635101cb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635101d40 0x910 PREV_IN_USE + a0 0c 10 35 56 55 00 00 a0 9c 6e d6 8b 7f 00 00 ...5VU....n..... + 0x555635102650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351026e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ + +Get all the arena information: + + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.arena()) # doctest: +SKIP + ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ........ + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ........ + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ + ============================ Heap (0x55c4669fd000) ============================ + 0x55c4669fd000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fd250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x55c4669fd660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + .......... + 0x55c4669fdca0 0x1010 PREV_IN_USE + a0 bc 3f 05 97 7f 00 00 40 ed 9f 66 c4 55 00 00 ..?.....@..f.U.. + 0x55c4669fecb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fed40 0x910 PREV_IN_USE + a0 dc 9f 66 c4 55 00 00 a0 bc 3f 05 97 7f 00 00 ...f.U....?..... + 0x55c4669ff650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669ff6e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ + =================================== Tcaches =================================== + [4] Tcache 0x58 (7) => Chunk(0x55c4669fdb50 0x60 PREV_IN_USE) => Chunk(0x55c4669 + fdaf0 0x60 PREV_IN_USE) => Chunk(0x55c4669fda90 0x60 PREV_IN_USE) => Chunk(0x55c + 4669fda30 0x60 PREV_IN_USE) => Chunk(0x55c4669fd970 0x60 PREV_IN_USE) => Chunk(0 + x55c4669fd910 0x60 PREV_IN_USE) => Chunk(0x55c4669fd8b0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 + 69fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x55c4669fed40 0x910 PREV_IN_USE) => Chunk(0x55c46 + 69fdca0 0x1010 PREV_IN_USE) => 0x7f97053fbca0 + ================================================================================ + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +Access to items of the non main arena: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> hp.arenas_count() # doctest: +SKIP + 2 + >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] # doctest: +SKIP + ==================================== Arena ==================================== + - Malloc State (0x7f97053fbc40) + top = 0x55c4669ff6e0 + last_remainder = 0x0 + next = 0x7f9700000020 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x55c4669fd000) + chunks_count = 0x15 + top: addr = 0x55c4669ff6e0, size = 0x1e920 + - Tcaches + [4] 0x58 (7) + - Fast bins + [4] 0x60 (2) + - Unsorted bins + [0] 0x0 (2) + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + ================================================================================ + ==================================== Arena ==================================== + - Malloc State (0x7f9700000020) + top = 0x7f9700002b30 + last_remainder = 0x0 + next = 0x7f97053fbc40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x7f97000008c0) + chunks_count = 0x4 + top: addr = 0x7f9700002b30, size = 0x1e4d0 + - Tcaches + [-] No chunks found + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + ================================================================================ + >>> _ = [print(ms) for ms in hp.all_arenas_fast_bins()] # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 + 69fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================== Fast Bins ================================== + [-] No chunks found + ================================================================================ + >>> print(hp.fast_bins()) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c4669fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.fast_bins(arena_index=1)) # doctest: +SKIP + ================================== Fast Bins ================================== + [-] No chunks found + ================================================================================ + """ # TODO: write heap documentation diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index c6fb9d516..fdf6a6567 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -14,6 +14,33 @@ class HeapExplorer: tcaches_enabled(bool): Indicates if tcaches are enabled for the current glibc version. + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.arena().summary()) # doctest: +SKIP + ========================== Arena ========================== + - Malloc State (0x7fad3f0a5c40) + top = 0x564c90e90f20 + last_remainder = 0x0 + next = 0x7fad3f0a5c40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x564c90e83000) + chunks_count = 0x245 + top: addr = 0x564c90e90f20, size = 0x130e0 + - Tcaches + [23] 0x188 (1) + [41] 0x2a8 (1) + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + =========================================================== + """ def __init__(self, pid, libc): @@ -240,6 +267,15 @@ def tcaches(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.tcaches()) + =================================== Tcaches =================================== + [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 + [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 + ================================================================================ + + Returns: :class:`Tcache` """ @@ -273,6 +309,33 @@ def arena(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.arena().summary()) # doctest: +SKIP + ========================== Arena ========================== + - Malloc State (0x7fad3f0a5c40) + top = 0x564c90e90f20 + last_remainder = 0x0 + next = 0x7fad3f0a5c40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x564c90e83000) + chunks_count = 0x245 + top: addr = 0x564c90e90f20, size = 0x130e0 + - Tcaches + [23] 0x188 (1) + [41] 0x2a8 (1) + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + =========================================================== + Returns: :class:`Arena` """ diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 6c280e8cd..1381fd072 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -939,6 +939,12 @@ def _libc(self): @property def heap_explorer(self): + """Returns a heap explorer that allows to inspect the items of the libc + heap. + + Returns: + HeapExplorer + """ return HeapExplorer(self.pid, self._libc()) @property From 8111e599bb005b86b2f6d3c12265739884b5f8c8 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 21:26:09 +0100 Subject: [PATCH 027/179] remove TODO comments --- pwnlib/heap/__init__.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 82935172a..325012769 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -319,14 +319,4 @@ """ -# TODO: write heap documentation -# * Tcaches -# * Fast bins -# * Unsorted bin -# * Small bins -# * Large bins -# * Arena -# * Use examples -# * Memory Maps - from .heap_explorer import HeapExplorer From 9c88b7f11aba5af207299410a92cb5724717e10a Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 22:00:48 +0100 Subject: [PATCH 028/179] fix test invalid syntax in proc.MemoryMap.is_in_range --- pwnlib/util/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 014813819..ecfc2b5a3 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -506,7 +506,7 @@ def is_in_range(self, address): True >>> m.is_in_range(0x55db09b81000) False - >>> >>> m.is_in_range(0x55db09b8200) + >>> m.is_in_range(0x55db09b8200) True """ return self.start_address <= address < self.end_address From 62cf594bc673cdcb37c3d35572b4a913355fd6fd Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 22:22:20 +0100 Subject: [PATCH 029/179] imported process into heap tests --- docs/source/heap.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/source/heap.rst b/docs/source/heap.rst index 68ce3e76d..820fe30ed 100644 --- a/docs/source/heap.rst +++ b/docs/source/heap.rst @@ -1,6 +1,8 @@ .. testsetup:: * from pwnlib.heap import * + from pwnlib.tubes.process import process + :mod:`pwnlib.heap` --- Heap explorer =================================================== From 2bbbbb11546bab2cb558656bf29f6fd6c0e80216 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 22:36:48 +0100 Subject: [PATCH 030/179] added skip doctest in heap_explorer.tcaches()>>> try: --- pwnlib/heap/heap_explorer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index fdf6a6567..d7b372bc8 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -269,7 +269,7 @@ def tcaches(self, arena_index=0): >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.tcaches()) + >>> print(hp.tcaches()) # doctest: +SKIP =================================== Tcaches =================================== [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 From 37e728a1c686c72ea0b5ad884056f0d85dd06986 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 22:38:02 +0100 Subject: [PATCH 031/179] added try context to test in heap_explorer.tcaches() --- pwnlib/heap/heap_explorer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index d7b372bc8..741fbfbe2 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -269,7 +269,11 @@ def tcaches(self, arena_index=0): >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.tcaches()) # doctest: +SKIP + >>> try: # doctest: +SKIP + ... print(hp.tcaches()) + ... except NoTcacheError: + ... pass + ... =================================== Tcaches =================================== [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 From 7b494b41990221edfe0a366506d486f132f90962 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Fri, 31 Jan 2020 22:50:13 +0100 Subject: [PATCH 032/179] fix typo in proc.MemoryMap.is_in_range --- pwnlib/util/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index ecfc2b5a3..254336f57 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -506,7 +506,7 @@ def is_in_range(self, address): True >>> m.is_in_range(0x55db09b81000) False - >>> m.is_in_range(0x55db09b8200) + >>> m.is_in_range(0x55db09b78200) True """ return self.start_address <= address < self.end_address From 83290a16005207b6c24fa368117f159b899c1863 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 00:58:05 +0100 Subject: [PATCH 033/179] added public method describe to ELF to print security checks and fixed error in process.libc --- pwnlib/elf/elf.py | 17 +++++++++++++++++ pwnlib/tubes/process.py | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/pwnlib/elf/elf.py b/pwnlib/elf/elf.py index 8c5694553..9ced5a02f 100644 --- a/pwnlib/elf/elf.py +++ b/pwnlib/elf/elf.py @@ -443,6 +443,23 @@ def debug(self, argv=[], *a, **kw): import pwnlib.gdb return pwnlib.gdb.debug([self.path] + argv, *a, **kw) + def describe(self): + """Prints the several information related with the binary protection + measures as well as the architecture. + + Examples: + >>> e = ELF("/bin/ls", checksec=False) + >>> e.describe() #doctest: +SKIP + [*] '/bin/ls' + Arch: amd64-64-little + RELRO: Partial RELRO + Stack: Canary found + NX: NX enabled + PIE: PIE enabled + FORTIFY: Enabled + """ + return self._describe() + def _describe(self, *a, **kw): log.info_once( '%s\n%-10s%s-%s-%s\n%s', diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 1381fd072..18689b99e 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -925,7 +925,7 @@ def libc(self): >>> p.close() """ e = self._libc() - e.checksec() + e.describe() return e def _libc(self): From 9b08ecd4aa89267d06212e022f78bed2519e9134 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:05:24 +0100 Subject: [PATCH 034/179] added check in case libc is not found, as statically linked files --- pwnlib/tubes/process.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 18689b99e..724302bb1 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -924,9 +924,13 @@ def libc(self): ELF('/lib64/libc-...so') >>> p.close() """ - e = self._libc() - e.describe() - return e + lib = self._libc() + + if lib is None: + return None + + lib.describe() + return lib def _libc(self): from pwnlib.elf import ELF From a7298a8934188b8dae5f9d50e9409c0ae7306686 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:24:01 +0100 Subject: [PATCH 035/179] added example to arenas_count --- pwnlib/heap/heap_explorer.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 741fbfbe2..f608e2dd9 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -89,6 +89,12 @@ def _are_tcaches_enabled(self): def arenas_count(self): """Returns the number of arenas + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> hp.arenas_count() # doctest: +SKIP + 2 + Returns: int """ From ccce1e27ebd0a2299970e4bc3173bfc8faa6f72a Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:26:20 +0100 Subject: [PATCH 036/179] added example to HeapExplorer.malloc_state --- pwnlib/heap/heap_explorer.py | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index f608e2dd9..ba6fa0535 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -107,6 +107,50 @@ def malloc_state(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.malloc_state()) # doctest: +SKIP + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ....... + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ...... + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ + Returns: :class:`MallocState` """ From a3a2b080fd428dbf713696ce6091f527f820c402 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:32:05 +0100 Subject: [PATCH 037/179] added example to HeapExplorer.heap --- pwnlib/heap/heap_explorer.py | 60 +++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index ba6fa0535..5eca13d61 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -110,7 +110,12 @@ def malloc_state(self, arena_index=0): Examples: >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.malloc_state()) # doctest: +SKIP + >>> ms = hp.malloc_state() + >>> hex(ms.top) # doctest: +SKIP + '0x55c4669ff6e0' + >>> hex(ms.address) # doctest: +SKIP + '0x7f97053fbc40' + >>> print(ms) # doctest: +SKIP ======================== Malloc State (0x7f97053fbc40) ======================== mutex = 0x0 flags = 0x1 @@ -173,6 +178,59 @@ def heap(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> heap = hp.heap() + >>> len(heap.chunks) # doctest: +SKIP + 574 + >>> print(heap) # doctest: +SKIP + ============================ Heap (0x555635100000) ============================ + 0x555635100000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x555635100660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100780 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351008a0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 10 00 10 35 56 55 00 00 ...........5VU.. + 0x555635100900 0x60 PREV_IN_USE + b0 08 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100960 0x60 PREV_IN_USE + 10 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x5556351009c0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100a20 0x60 PREV_IN_USE + 70 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 p..5VU.....5VU.. + 0x555635100a80 0x60 PREV_IN_USE + 30 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 0..5VU.....5VU.. + 0x555635100ae0 0x60 PREV_IN_USE + 90 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100b40 0x60 PREV_IN_USE + f0 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100ba0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c00 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c20 0x60 PREV_IN_USE + a0 0b 10 35 56 55 00 00 00 00 00 00 00 00 00 00 ...5VU.......... + 0x555635100c80 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100ca0 0x1010 PREV_IN_USE + a0 9c 6e d6 8b 7f 00 00 40 1d 10 35 56 55 00 00 ..n.....@..5VU.. + 0x555635101cb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635101d40 0x910 PREV_IN_USE + a0 0c 10 35 56 55 00 00 a0 9c 6e d6 8b 7f 00 00 ...5VU....n..... + 0x555635102650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351026e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ + Returns: :class:`Heap` """ From bced600fbe43433306e76b037c2a4a6fb590f022 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:33:42 +0100 Subject: [PATCH 038/179] added example to HeapExplorer.unsorted_bin --- pwnlib/heap/heap_explorer.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 5eca13d61..2c2ceebd6 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -258,6 +258,16 @@ def unsorted_bin(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Examples: + + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.unsorted_bin()) # doctest: +SKIP + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 + 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 + ================================================================================ + Returns: :class:`UnsortedBins` """ From 7e57d96b261e1e01abd8d7b636c17bbff22bd05f Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:34:34 +0100 Subject: [PATCH 039/179] added example to HeapExplorer.small_bins --- pwnlib/heap/heap_explorer.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 2c2ceebd6..3e57e6e26 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -298,6 +298,15 @@ def small_bins(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.small_bins()) # doctest: +SKIP + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + + Returns: :class:`SmallBins` """ From c3b82b9dfb46b8ef552c417cbd1a4fc9196b27ca Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:35:38 +0100 Subject: [PATCH 040/179] added example to HeapExplorer.large_bins --- pwnlib/heap/heap_explorer.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 3e57e6e26..75a88002d 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -337,6 +337,15 @@ def large_bins(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.large_bins()) # doctest: +SKIP + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ + + Returns: :class:`LargeBins` """ From 81f32707e04d246cab3e1d53d3e0af68ea918d8f Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:37:28 +0100 Subject: [PATCH 041/179] added example to HeapExplorer.fast_bins --- pwnlib/heap/heap_explorer.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 75a88002d..a38c132fd 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -376,6 +376,15 @@ def fast_bins(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> print(hp.fast_bins()) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 + 5100ba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + Returns: :class:`FastBins` """ From 65184f892575f2b1d162328d0da57f725b5cc0d7 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 16:49:49 +0100 Subject: [PATCH 042/179] added example to process.heap_explorer --- pwnlib/heap/heap_explorer.py | 17 ++++++++++++----- pwnlib/tubes/process.py | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index a38c132fd..8678057ff 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -17,6 +17,8 @@ class HeapExplorer: Examples: >>> p = process('bash') >>> hp = p.heap_explorer + >>> hp.tcaches_enabled # doctest: +SKIP + True >>> print(hp.arena().summary()) # doctest: +SKIP ========================== Arena ========================== - Malloc State (0x7fad3f0a5c40) @@ -262,7 +264,8 @@ def unsorted_bin(self, arena_index=0): >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.unsorted_bin()) # doctest: +SKIP + >>> unsorted_bins = hp.unsorted_bin() + >>> print(unsorted_bins) # doctest: +SKIP ================================ Unsorted Bins ================================ [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 @@ -301,7 +304,8 @@ def small_bins(self, arena_index=0): Examples: >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.small_bins()) # doctest: +SKIP + >>> small_bins = hp.small_bins() + >>> print(small_bins) # doctest: +SKIP ================================== Small Bins ================================== [-] No chunks found ================================================================================ @@ -340,7 +344,8 @@ def large_bins(self, arena_index=0): Examples: >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.large_bins()) # doctest: +SKIP + >>> large_bins = hp.large_bins() + >>> print(large_bins) # doctest: +SKIP ================================== Large Bins ================================== [-] No chunks found ================================================================================ @@ -379,7 +384,8 @@ def fast_bins(self, arena_index=0): Examples: >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.fast_bins()) # doctest: +SKIP + >>> fast_bins = hp.fast_bins() + >>> print(fast_bins) # doctest: +SKIP ================================== Fast Bins ================================== [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 5100ba0 0x60 PREV_IN_USE) => 0x0 @@ -461,7 +467,8 @@ def arena(self, arena_index=0): Examples: >>> p = process('bash') >>> hp = p.heap_explorer - >>> print(hp.arena().summary()) # doctest: +SKIP + >>> arena = hp.arena() + >>> print(arena.summary()) # doctest: +SKIP ========================== Arena ========================== - Malloc State (0x7fad3f0a5c40) top = 0x564c90e90f20 diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 724302bb1..e956081de 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -946,6 +946,20 @@ def heap_explorer(self): """Returns a heap explorer that allows to inspect the items of the libc heap. + Examples: + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> heap = hp.heap() + >>> len(heap.chunks) # doctest: +SKIP + 574 + >>> fast_bins = hp.fast_bins() + >>> print(fast_bins) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 + 5100ba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + + Returns: HeapExplorer """ From 23fdec8c61884a720018b23c6d04dae413ba83d5 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:00:29 +0100 Subject: [PATCH 043/179] added examples to MemoryMap.address and MemoryMap.size --- pwnlib/util/proc.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 254336f57..924f445bf 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -464,11 +464,32 @@ def __init__(self, start_address, end_address, flags, offset, device_major, devi @property def address(self): + """Alias of start_address + + Examples: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> hex(m.start_address) + '0x55db09b78000' + >>> hex(m.address) + '0x55db09b78000' + + Returns: + int + """ return self.start_address @property def size(self): - """The size of the map""" + """The size of the map + + Examples: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> hex(m.size) + '0x9000' + + Returns: + int + """ return self.end_address - self.start_address @property From 864bbddf526216fa9f44d6a55f831481656ddb0a Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:02:37 +0100 Subject: [PATCH 044/179] added example to MemoryMap.readable --- pwnlib/util/proc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 924f445bf..834700eb6 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -494,6 +494,18 @@ def size(self): @property def readable(self): + """Shorcut for flags.readable + + Examples: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> m.flags.readable + True + >>> m.readable + True + + Returns: + int + """ return self.flags.readable @property From 4a616a65f6a09463aa2af7dc28e6291a5b3ccf84 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:04:36 +0100 Subject: [PATCH 045/179] added example to MemoryMap.writable --- pwnlib/util/proc.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 834700eb6..e57a87391 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -411,7 +411,7 @@ def __str__(self): class MemoryMap: """Object with the information of the memory maps described in /proc//maps - Arguments: + Attributes: start_address(int): The starting address of the map end_address(int): The ending address of the map flags(MemoryMapFlags): The flags (read, write, exec, private, shared) of the map @@ -504,12 +504,24 @@ def readable(self): True Returns: - int + bool """ return self.flags.readable @property def writable(self): + """Shorcut for flags.writable + + Examples: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> m.flags.writable + True + >>> m.writable + True + + Returns: + bool + """ return self.flags.writable @property From c6fa55811688f2a0fb91b04a7199b93e158c69a9 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:05:32 +0100 Subject: [PATCH 046/179] added example to MemoryMap.executable --- pwnlib/util/proc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index e57a87391..be49bb84d 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -526,6 +526,18 @@ def writable(self): @property def executable(self): + """Shorcut for flags.executable + + Examples: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> m.flags.executable + False + >>> m.executable + False + + Returns: + bool + """ return self.flags.executable @property From 0f4da5fea4a52bd858b948c5d3327ee287a192d5 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:06:21 +0100 Subject: [PATCH 047/179] added example to MemoryMap.shared --- pwnlib/util/proc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index be49bb84d..c54b45ff1 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -546,6 +546,18 @@ def private(self): @property def shared(self): + """Shorcut for flags.shared + + Examples: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> m.flags.shared + False + >>> m.shared + False + + Returns: + bool + """ return self.flags.shared def is_in_range(self, address): From a15646676cec2bd630acabd7fc72e4cae6f94911 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:07:01 +0100 Subject: [PATCH 048/179] added example to MemoryMap.private --- pwnlib/util/proc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index c54b45ff1..210522652 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -542,6 +542,18 @@ def executable(self): @property def private(self): + """Shorcut for flags.private + + Examples: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> m.flags.private + True + >>> m.private + True + + Returns: + bool + """ return self.flags.private @property From 7fde593851cc3442633275cf36a226c15ef30000 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:10:03 +0100 Subject: [PATCH 049/179] added example to MemoryMapFlags.shared --- pwnlib/util/proc.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 210522652..7e0e2d416 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -349,7 +349,7 @@ class MemoryMapFlags: readable(bool): True if map is readable writable(bool): True if map is writable executable(bool): True if map can be executed - private(bool): True if map is not shared + private(bool): True if map is not shared, therefore private Example: @@ -376,6 +376,16 @@ def __init__(self, readable, writable, executable, private): @property def shared(self): + """True if map is shared + + Examples: + >>> m = MemoryMapFlags.from_str('rw-p') + >>> m.shared + False + + Returns: + bool + """ return not self.private @classmethod From c24be3121ccd1da1833734336c823e70e39afc91 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:21:32 +0100 Subject: [PATCH 050/179] added example to MemoryMaps.heap --- pwnlib/util/proc.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 7e0e2d416..79893adff 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -712,9 +712,46 @@ def map_with_address(self, address): @property def heap(self): + """Shortcut to retrieve the map named "[heap]" + + Raises: + KeyError: The map "[heap]" was not found + + Returns: + MemoryMap + + Examples: + >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /tmp/test + ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test + ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test + ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] + ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 + ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 + ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] + ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] + ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] + ... \""") + >>> str(maps.heap) + '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' + + """ for map_ in self.maps: if map_.path == "[heap]": return map_ + raise KeyError("[heap]") @property def stack(self): From d3d3d17230c17d57e5578c80dee49f443a853914 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:23:48 +0100 Subject: [PATCH 051/179] added example to MemoryMaps.stack --- pwnlib/util/proc.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 79893adff..2a91caf30 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -755,9 +755,46 @@ def heap(self): @property def stack(self): + """Shortcut to retrieve the map named "[stack]" + + Raises: + KeyError: The map "[stack]" was not found + + Returns: + MemoryMap + + Examples: + >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /tmp/test + ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test + ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test + ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] + ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 + ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 + ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] + ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] + ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] + ... \""") + >>> str(maps.stack) + '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' + + """ for map_ in self.maps: if map_.path == "[stack]": return map_ + raise KeyError("[stack]") def __str__(self): return "\n".join([str(map_) for map_ in self.maps]) From a4cfff21bfe12a1979840de2c756c6fd35c16189 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:42:35 +0100 Subject: [PATCH 052/179] refactorized MemoryMaps, added function _look_map --- pwnlib/util/proc.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 2a91caf30..a21755ced 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -748,10 +748,7 @@ def heap(self): '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' """ - for map_ in self.maps: - if map_.path == "[heap]": - return map_ - raise KeyError("[heap]") + return self._lookup_map("[heap]") @property def stack(self): @@ -791,10 +788,24 @@ def stack(self): '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' """ + return self._lookup_map("[stack]") + + def _lookup_map(self, map_path): + """Retrieves the first map with the name or file path given + + Args: + map_path: The path of file or name of the map + + Raises: + KeyError: The map was not found + + Returns: + MemoryMap + """ for map_ in self.maps: - if map_.path == "[stack]": + if map_.path == map_path: return map_ - raise KeyError("[stack]") + raise KeyError(map_path) def __str__(self): return "\n".join([str(map_) for map_ in self.maps]) From c60338d1ceec8cff48e92745890328a15045b445 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 17:51:30 +0100 Subject: [PATCH 053/179] added example to MemoryMaps.map_with_address --- pwnlib/util/proc.py | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index a21755ced..6ee7f4d12 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -701,14 +701,50 @@ def map_with_address(self, address): Arguments: address (int): Memory addr + Raises: + IndexError: When given address is not in the range of any + memory map + Returns: - MemoryMap or None: Returns MemoryMap in case some map contains - the address, None otherwise + MemoryMap + + >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /tmp/test + ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test + ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test + ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] + ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 + ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 + ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] + ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] + ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] + ... \""") + >>> str(maps.map_with_address(0x7ffd9bb48200)) + '7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0\\t\\t[vdso]' + >>> try: + ... maps.map_with_address(0xdeadbeef) + ... except IndexError as ex: + ... print(ex) + ... + address out of range + """ for map_ in self.maps: if map_.is_in_range(address): return map_ - return None + raise IndexError("address out of range") @property def heap(self): From 3aa3b3659c576c00240a7c409332bae85e060fdb Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 18:02:56 +0100 Subject: [PATCH 054/179] added example to MemoryMaps.from_str --- pwnlib/util/proc.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 6ee7f4d12..800ac5a2d 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -692,6 +692,46 @@ def from_process(cls, pid): @classmethod def from_str(cls, maps_string): + """Creates a new instance of MemoryMaps from a string with the maps + described, usually the content of /proc//maps. + + Args: + maps_string: The description of the maps in string format. Usually + the content of /proc//maps. + + Returns: + MemoryMaps + + Examples: + >>> maps = MemoryMaps.from_str(\"""561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814 /home/zrt/test + ... 561ce1d70000-561ce1d71000 r-xp 00001000 fe:01 3676814 /home/zrt/test + ... 561ce1d71000-561ce1d72000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d72000-561ce1d73000 r--p 00002000 fe:01 3676814 /home/zrt/test + ... 561ce1d73000-561ce1d74000 rw-p 00003000 fe:01 3676814 /home/zrt/test + ... 561ce2895000-561ce28b6000 rw-p 00000000 00:00 0 [heap] + ... 7f6e59ff0000-7f6e5a012000 r--p 00000000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a012000-7f6e5a15a000 r-xp 00022000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a15a000-7f6e5a1a6000 r--p 0016a000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a6000-7f6e5a1a7000 ---p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1a7000-7f6e5a1ab000 r--p 001b6000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ab000-7f6e5a1ad000 rw-p 001ba000 fe:01 9831037 /usr/lib/x86_64-linux-gnu/libc-2.28.so + ... 7f6e5a1ad000-7f6e5a1b3000 rw-p 00000000 00:00 0 + ... 7f6e5a1cd000-7f6e5a1ce000 r--p 00000000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ce000-7f6e5a1ec000 r-xp 00001000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1ec000-7f6e5a1f4000 r--p 0001f000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f4000-7f6e5a1f5000 r--p 00026000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f5000-7f6e5a1f6000 rw-p 00027000 fe:01 9830423 /usr/lib/x86_64-linux-gnu/ld-2.28.so + ... 7f6e5a1f6000-7f6e5a1f7000 rw-p 00000000 00:00 0 + ... 7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0 [stack] + ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] + ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] + ... \""") + >>> str(maps[0]) + '561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814\t\t/home/zrt/test' + >>> str(maps[len(maps) - 1]) + '7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0\t\t[vdso]' + + """ maps = [MemoryMap.from_str(line) for line in maps_string.splitlines()] return cls(maps) From ab0aab08f01c31d4ef750b51fc89459996220f86 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 18:11:38 +0100 Subject: [PATCH 055/179] added example to MemoryMaps.from_process --- pwnlib/util/proc.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 800ac5a2d..37de0e4bb 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -685,6 +685,22 @@ def __init__(self, maps): @classmethod def from_process(cls, pid): + """Creates a new instance of MemoryMaps from a process. + + Args: + pid: PID of the target process. + + Returns: + MemoryMaps + + Examples: + >>> import os + >>> maps = MemoryMaps.from_process(os.getpid()) + >>> str(maps[0]) #doctest: +SKIP + '400000-421000 r--p 00000000 fe:01 9836223\t\t/usr/bin/python3.7' + >>> str(maps[len(maps) - 1]) #doctest: +SKIP + '7fff8d16e000-7fff8d170000 r-xp 00000000 00:00 0\t\t[vdso]' + """ with open('/proc/%s/maps' % pid) as fmap: maps_raw = fmap.read() From c823b4b1da261b6cb37e6f3e230dea643a2d7465 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 18:15:35 +0100 Subject: [PATCH 056/179] added example to MemoryMap.from_str --- pwnlib/util/proc.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 37de0e4bb..60f2f086d 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -604,6 +604,20 @@ def is_in_range(self, address): @classmethod def from_str(cls, map_str): + """Retrieves a memory map from a string describing it, such as a line + of the file /proc//maps. + + Args: + map_str: String which describes a map + + Returns: + MemoryMap + + Example: + >>> m = MemoryMap.from_str("55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010 /usr/bins/bash") + >>> str(m) + '55db09b78000-55db09b81000 rw-p 00114000 fe:01 9832010\\t\\t/usr/bins/bash' + """ parts = map_str.split() start_address, end_address = parts[0].split("-") From 8735f2f5856f4286494d72fc3aa3eb6d83d4d5bf Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 18:29:00 +0100 Subject: [PATCH 057/179] fixed indentation in HeapExplorer.malloc_state example --- pwnlib/heap/heap_explorer.py | 94 ++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 8678057ff..49192f811 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -110,53 +110,53 @@ def malloc_state(self, arena_index=0): is specified, then the index of the main arena will be selected Examples: - >>> p = process('bash') - >>> hp = p.heap_explorer - >>> ms = hp.malloc_state() - >>> hex(ms.top) # doctest: +SKIP - '0x55c4669ff6e0' - >>> hex(ms.address) # doctest: +SKIP - '0x7f97053fbc40' - >>> print(ms) # doctest: +SKIP - ======================== Malloc State (0x7f97053fbc40) ======================== - mutex = 0x0 - flags = 0x1 - have_fastchunks = 0x0 - fastbinsY - [0] 0x20 => 0x0 - [1] 0x30 => 0x0 - [2] 0x40 => 0x0 - [3] 0x50 => 0x0 - [4] 0x60 => 0x55c4669fdc20 - [5] 0x70 => 0x0 - [6] 0x80 => 0x0 - [7] 0x90 => 0x0 - [8] 0xa0 => 0x0 - [9] 0xb0 => 0x0 - top = 0x55c4669ff6e0 - last_remainder = 0x0 - bins - Unsorted bins - [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 - Small bins - [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 - [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 - ....... - [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 - [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 - Large bins - [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 - [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 - ...... - [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 - [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 - binmap = [0x0, 0x0, 0x0, 0x0] - next = 0x7f96f8000020 - next_free = 0x0 - attached_threads = 0x1 - system_mem = 0x21000 - max_system_mem = 0x21000 - ================================================================================ + >>> p = process('bash') + >>> hp = p.heap_explorer + >>> ms = hp.malloc_state() + >>> hex(ms.top) # doctest: +SKIP + '0x55c4669ff6e0' + >>> hex(ms.address) # doctest: +SKIP + '0x7f97053fbc40' + >>> print(ms) # doctest: +SKIP + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ....... + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ...... + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ Returns: :class:`MallocState` From 5a20b8e7827861208c38fdcc15465ce54e9c3b94 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 18:32:17 +0100 Subject: [PATCH 058/179] fixed string format error in MemoryMaps.from_str example --- pwnlib/util/proc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 60f2f086d..1102ea077 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -757,9 +757,9 @@ def from_str(cls, maps_string): ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] ... \""") >>> str(maps[0]) - '561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814\t\t/home/zrt/test' + '561ce1d6f000-561ce1d70000 r--p 00000000 fe:01 3676814\\t\\t/home/zrt/test' >>> str(maps[len(maps) - 1]) - '7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0\t\t[vdso]' + '7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0\\t\\t[vdso]' """ maps = [MemoryMap.from_str(line) for line in maps_string.splitlines()] From 8ff1c0e6b4e36dac66c54677a32ebcf0fc34496b Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 20:12:07 +0100 Subject: [PATCH 059/179] added exception process._libc (and therefore process.libc) in case of being able to find the libc library in process memory --- pwnlib/tubes/process.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index e956081de..5b9920078 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -907,7 +907,6 @@ def maps(self): return pwnlib.util.proc.MemoryMaps.from_str(maps_raw) - @property def libc(self): """libc() -> ELF @@ -916,6 +915,9 @@ def libc(self): If possible, it is adjusted to the correct address automatically. + Raises: + PwnlibException: In case the libc is not found + Example: >>> p = process("/bin/cat") @@ -925,14 +927,19 @@ def libc(self): >>> p.close() """ lib = self._libc() - - if lib is None: - return None - lib.describe() return lib def _libc(self): + """Function to retrieve the libc library from the current process + + Raises: + PwnlibException: In case the libc is not found + + Returns: + ELF + """ + from pwnlib.elf import ELF for lib, address in self.libs().items(): @@ -941,6 +948,8 @@ def _libc(self): e.address = address return e + self.error("Unable to find the libc library") + @property def heap_explorer(self): """Returns a heap explorer that allows to inspect the items of the libc From a052c0e42e8ab27f915bdd3e429442a158694b94 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 20:32:51 +0100 Subject: [PATCH 060/179] added process detail to the libc exception --- pwnlib/tubes/process.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 5b9920078..eb76f1e00 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -948,7 +948,11 @@ def _libc(self): e.address = address return e - self.error("Unable to find the libc library") + self.error( + "Unable to find the libc library in process {}".format( + self.executable + ) + ) @property def heap_explorer(self): From 99e3a604b4be26846747f4d3c60c17dbfb81a31b Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 21:52:17 +0100 Subject: [PATCH 061/179] added addresss details to the MemoryMaps.map_with_address exception --- pwnlib/util/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 1102ea077..442dad01e 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -814,7 +814,7 @@ def map_with_address(self, address): for map_ in self.maps: if map_.is_in_range(address): return map_ - raise IndexError("address out of range") + raise IndexError("address {:#x} out of range".format(address)) @property def heap(self): From b590b449fa51a4d1648c038b373f58e8790afc7c Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sat, 1 Feb 2020 21:53:40 +0100 Subject: [PATCH 062/179] modify example of MemoryMaps.map_with_address --- pwnlib/util/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 442dad01e..18146c5d7 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -808,7 +808,7 @@ def map_with_address(self, address): ... except IndexError as ex: ... print(ex) ... - address out of range + address 0xdeadbeef out of range """ for map_ in self.maps: From 1f5cd36db9ee8e2bee309641bddbb5aa4a588a70 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 00:07:24 +0100 Subject: [PATCH 063/179] changed heap examples process to sh --- pwnlib/heap/__init__.py | 12 ++++++------ pwnlib/heap/heap_explorer.py | 20 ++++++++++---------- pwnlib/tubes/process.py | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 325012769..abaf84d42 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -12,7 +12,7 @@ Get a summary of the items of the arena: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> print(hp.arena().summary()) # doctest: +SKIP ========================== Arena ========================== @@ -40,7 +40,7 @@ View the malloc state: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> print(hp.malloc_state()) # doctest: +SKIP ======================== Malloc State (0x7f97053fbc40) ======================== @@ -86,7 +86,7 @@ List the chunks of the bins: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> print(hp.tcaches()) # doctest: +SKIP =================================== Tcaches =================================== @@ -116,7 +116,7 @@ List the chunks of the arena heap: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> print(hp.heap()) # doctest: +SKIP ============================ Heap (0x555635100000) ============================ @@ -166,7 +166,7 @@ Get all the arena information: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> print(hp.arena()) # doctest: +SKIP ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ @@ -253,7 +253,7 @@ Access to items of the non main arena: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> hp.arenas_count() # doctest: +SKIP 2 diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 49192f811..be35602d6 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -15,7 +15,7 @@ class HeapExplorer: glibc version. Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> hp.tcaches_enabled # doctest: +SKIP True @@ -92,7 +92,7 @@ def arenas_count(self): """Returns the number of arenas Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> hp.arenas_count() # doctest: +SKIP 2 @@ -110,7 +110,7 @@ def malloc_state(self, arena_index=0): is specified, then the index of the main arena will be selected Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> ms = hp.malloc_state() >>> hex(ms.top) # doctest: +SKIP @@ -182,7 +182,7 @@ def heap(self, arena_index=0): Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> heap = hp.heap() >>> len(heap.chunks) # doctest: +SKIP @@ -262,7 +262,7 @@ def unsorted_bin(self, arena_index=0): Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> unsorted_bins = hp.unsorted_bin() >>> print(unsorted_bins) # doctest: +SKIP @@ -302,7 +302,7 @@ def small_bins(self, arena_index=0): is specified, then the index of the main arena will be selected Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> small_bins = hp.small_bins() >>> print(small_bins) # doctest: +SKIP @@ -342,7 +342,7 @@ def large_bins(self, arena_index=0): is specified, then the index of the main arena will be selected Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> large_bins = hp.large_bins() >>> print(large_bins) # doctest: +SKIP @@ -382,7 +382,7 @@ def fast_bins(self, arena_index=0): is specified, then the index of the main arena will be selected Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> fast_bins = hp.fast_bins() >>> print(fast_bins) # doctest: +SKIP @@ -418,7 +418,7 @@ def tcaches(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> try: # doctest: +SKIP ... print(hp.tcaches()) @@ -465,7 +465,7 @@ def arena(self, arena_index=0): is specified, then the index of the main arena will be selected Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> arena = hp.arena() >>> print(arena.summary()) # doctest: +SKIP diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index eb76f1e00..25c79be7a 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -960,7 +960,7 @@ def heap_explorer(self): heap. Examples: - >>> p = process('bash') + >>> p = process('sh') >>> hp = p.heap_explorer >>> heap = hp.heap() >>> len(heap.chunks) # doctest: +SKIP From 5b6cf77d6f3434efc69adc94d9bcfe90882dca04 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 11:46:47 +0100 Subject: [PATCH 064/179] removed __repr__ from SmallBins --- pwnlib/heap/bins/small_bin.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/bins/small_bin.py index b5932ee58..ac70f66b4 100644 --- a/pwnlib/heap/bins/small_bin.py +++ b/pwnlib/heap/bins/small_bin.py @@ -22,19 +22,6 @@ class SmallBin(Bin): def __init__(self, bin_entry, malloc_chunks): super(SmallBin, self).__init__(bin_entry, malloc_chunks) - def __repr__(self): - - msg = "Smallbin [size = {:#x}, count = {}] => {:#x}".format( - self.chunks_size, - len(self), - self.fd - ) - - for chunk in self.malloc_chunks: - msg += chunk.to_bin_str() - - return msg - def _name(self): return "Small Bin" From 1a3aec8aff07aefa083a55f1064d374b936b47fe Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 11:48:04 +0100 Subject: [PATCH 065/179] removed __repr__ from UnsortedBin --- pwnlib/heap/bins/unsorted_bin.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py index 13d5b4df6..5cae31451 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -28,18 +28,6 @@ class UnsortedBin(Bin): def __init__(self, bin_entry, malloc_chunks): super(UnsortedBin, self).__init__(bin_entry, malloc_chunks) - def __repr__(self): - - msg = "Unsorted bins [count = {}] => {:#x}".format( - len(self), - self.fd - ) - - for chunk in self.malloc_chunks: - msg += chunk.to_bin_str() - - return msg - def _name(self): return "Unsorted Bin" From a6011df8dfbecf082a6ed9bc23d2c0da9d46c6fd Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 11:54:54 +0100 Subject: [PATCH 066/179] increased scope of HeapExplorer.heap example --- pwnlib/heap/heap_explorer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index be35602d6..6400ea871 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -187,7 +187,11 @@ def heap(self, arena_index=0): >>> heap = hp.heap() >>> len(heap.chunks) # doctest: +SKIP 574 - >>> print(heap) # doctest: +SKIP + >>> top_chunk = heap.top + >>> hex(top_chunk.address) # doctest: +SKIP + '0x56080f5dbb00' + >>> heap_str = str(heap) + >>> print(heap_str) # doctest: +SKIP ============================ Heap (0x555635100000) ============================ 0x555635100000 0x250 PREV_IN_USE 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ From 9af661bf6848badaaeaac7c1b0a6a6ede179c3f1 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 11:56:27 +0100 Subject: [PATCH 067/179] removed __repr__ from LargeBin --- pwnlib/heap/bins/large_bin.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/bins/large_bin.py index f283f52c9..fa4627e56 100644 --- a/pwnlib/heap/bins/large_bin.py +++ b/pwnlib/heap/bins/large_bin.py @@ -26,19 +26,6 @@ def __init__(self, bin_entry, malloc_chunks): def min_chunks_size(self): return self.chunks_size - def __repr__(self): - - msg = "Largebin [min_size = {:#x}, count = {}] => {:#x}".format( - self.min_chunks_size, - len(self), - self.fd - ) - - for chunk in self.malloc_chunks: - msg += chunk.to_bin_str() - - return msg - def _name(self): return "Large Bin" From e07e420d589e2bba90b1ad3d5d90cd0f0bba735a Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:22:28 +0100 Subject: [PATCH 068/179] added explicit imports to heap.malloc_state.malloc_state.parser --- pwnlib/heap/malloc_state/malloc_state/parser.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/malloc_state/malloc_state/parser.py b/pwnlib/heap/malloc_state/malloc_state/parser.py index 13a01ce24..16e3aa13a 100644 --- a/pwnlib/heap/malloc_state/malloc_state/parser.py +++ b/pwnlib/heap/malloc_state/malloc_state/parser.py @@ -1,6 +1,6 @@ -from pwnlib.heap.malloc_state.bins import * -from pwnlib.heap.malloc_state.fastbinsy import * -from construct import * +from pwnlib.heap.malloc_state.bins import BinsParser +from pwnlib.heap.malloc_state.fastbinsy import FastBinsYParser +from construct import Int32ul, Int64ul, Struct, Padding from .malloc_state import MallocState NFASTBINS = 10 @@ -8,6 +8,7 @@ INT_SIZE = 4 BINMAPSIZE = 4 + class MallocStateParser: """Class with the logic of parsing the malloc_state struct from binary data. Handles special cases which depends on the glibc version. From be6eec242d29797a072a5a4041e0b3859e79d8b8 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:23:38 +0100 Subject: [PATCH 069/179] added explicit imports to heap.malloc_state.malloc_state.__init__ --- pwnlib/heap/malloc_state/malloc_state/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/malloc_state/malloc_state/__init__.py b/pwnlib/heap/malloc_state/malloc_state/__init__.py index 846561996..917188734 100644 --- a/pwnlib/heap/malloc_state/malloc_state/__init__.py +++ b/pwnlib/heap/malloc_state/malloc_state/__init__.py @@ -1,3 +1,3 @@ -from .malloc_state import * -from .parser import * +from .malloc_state import MallocState +from .parser import MallocStateParser From 5be297ce17cbf3a74567c91d223f2783012f0990 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:24:18 +0100 Subject: [PATCH 070/179] added explicit imports to heap.malloc_state.fastbinsy --- pwnlib/heap/malloc_state/fastbinsy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/malloc_state/fastbinsy.py index 382f02201..2b95c853a 100644 --- a/pwnlib/heap/malloc_state/fastbinsy.py +++ b/pwnlib/heap/malloc_state/fastbinsy.py @@ -1,4 +1,4 @@ -from pwnlib.heap.utils import * +from pwnlib.heap.utils import u64, u32 from pwnlib.heap.bins.fast_bin import FastBinEntry From 03334304939a429f39cf31b50df1c3f76f60ffa4 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:29:13 +0100 Subject: [PATCH 071/179] added explicit imports to heap.malloc_state.bins.parser --- pwnlib/heap/malloc_state/bins/parser.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/malloc_state/bins/parser.py b/pwnlib/heap/malloc_state/bins/parser.py index e402fbf89..d6165ffcd 100644 --- a/pwnlib/heap/malloc_state/bins/parser.py +++ b/pwnlib/heap/malloc_state/bins/parser.py @@ -1,7 +1,6 @@ - -from pwnlib.heap.utils import * from pwnlib.heap.bins import SmallBinEntry, LargeBinEntry, UnsortedBinEntry -from .bins_indexes import * +from pwnlib.heap.malloc_state.bins.bins_indexes import \ + LARGE_BINS_START_INDEX, SMALL_BINS_START_INDEX from .bins import Bins From 8067c9206d84d7c5ee4fbe5913a3b480390f0a18 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:32:53 +0100 Subject: [PATCH 072/179] added explicit imports to heap.malloc_state.bins.bins and set description into properties --- pwnlib/heap/malloc_state/bins/bins.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/pwnlib/heap/malloc_state/bins/bins.py b/pwnlib/heap/malloc_state/bins/bins.py index b326c1511..7bf5abaad 100644 --- a/pwnlib/heap/malloc_state/bins/bins.py +++ b/pwnlib/heap/malloc_state/bins/bins.py @@ -1,4 +1,5 @@ -from .bins_indexes import * +from pwnlib.heap.malloc_state.bins.bins_indexes import \ + LARGE_BINS_START_INDEX, SMALL_BINS_START_INDEX, UNSORTED_BIN_INDEX class Bins: @@ -7,11 +8,6 @@ class Bins: Attributes: entries (list of :class:`BinEntry`): entries with pointers to the first and last chunks of the each double linked bin. - unsorted_bin_entry (:class:`BinEntry`): entry of the unsorted bin. - small_bins_entries (list of :class:`BinEntry`): entries of the small - bins. - large_bins_entries (list of :class:`BinEntry`): entries of the large - bins. """ def __init__(self, entries): @@ -19,14 +15,29 @@ def __init__(self, entries): @property def unsorted_bin_entry(self): + """Returns the entry of the unsorted bin. + + Returns: + BinEntry + """ return self.entries[UNSORTED_BIN_INDEX] @property def small_bins_entries(self): + """Returns the entries of the small bins. + + Returns: + :obj:`list` of :class:`BinEntry` + """ return self.entries[SMALL_BINS_START_INDEX:LARGE_BINS_START_INDEX] @property def large_bins_entries(self): + """Returns the entries of the large bins. + + Returns: + :obj:`list` of :class:`BinEntry` + """ return self.entries[LARGE_BINS_START_INDEX:] def __getitem__(self, index): From 648ea2d7ca730f5793bee66db9d2d967d5542182 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:35:12 +0100 Subject: [PATCH 073/179] added explicit imports to heap.malloc_state.bins.__init__ --- pwnlib/heap/malloc_state/bins/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/malloc_state/bins/__init__.py b/pwnlib/heap/malloc_state/bins/__init__.py index 3b079e143..16f63550d 100644 --- a/pwnlib/heap/malloc_state/bins/__init__.py +++ b/pwnlib/heap/malloc_state/bins/__init__.py @@ -1,4 +1,5 @@ from .bins import Bins from .parser import BinsParser -from .bins_indexes import * +from .bins_indexes import \ + UNSORTED_BIN_INDEX, SMALL_BINS_START_INDEX, LARGE_BINS_START_INDEX From 6274f80e2f5fb2e2a14a1fc1dd0c03573312d052 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:38:48 +0100 Subject: [PATCH 074/179] added explicit imports to heap.malloc_state.__init__ --- pwnlib/heap/malloc_state/__init__.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/malloc_state/__init__.py b/pwnlib/heap/malloc_state/__init__.py index 594a4d803..117e2418d 100644 --- a/pwnlib/heap/malloc_state/__init__.py +++ b/pwnlib/heap/malloc_state/__init__.py @@ -1,4 +1,8 @@ -from .malloc_state import * -from .fastbinsy import * -from .bins import * +from .malloc_state import MallocStateParser, MallocState +from .fastbinsy import FastBinsY +from .bins import \ + Bins, \ + UNSORTED_BIN_INDEX, \ + SMALL_BINS_START_INDEX, \ + LARGE_BINS_START_INDEX From ffe1a76e8433b0bed3df02eff4c70e1f447b6c50 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:39:49 +0100 Subject: [PATCH 075/179] added explicit imports to heap.heap.heap_info.py --- pwnlib/heap/heap/heap_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/heap/heap_info.py b/pwnlib/heap/heap/heap_info.py index df53c9658..3591f4b93 100644 --- a/pwnlib/heap/heap/heap_info.py +++ b/pwnlib/heap/heap/heap_info.py @@ -1,4 +1,4 @@ -from construct import * +from construct import Int64ul, Int32ul, Struct class HeapInfoParser: From f558e7b0456ac053a862aeb1d7b76bc6d81f87ff Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:41:14 +0100 Subject: [PATCH 076/179] added explicit imports to heap.heap.heap_parser --- pwnlib/heap/heap/heap_parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/heap/heap_parser.py b/pwnlib/heap/heap/heap_parser.py index a211c403b..28a57bf1e 100644 --- a/pwnlib/heap/heap/heap_parser.py +++ b/pwnlib/heap/heap/heap_parser.py @@ -1,6 +1,6 @@ -from .heap_info import HeapInfoParser from pwnlib.heap.utils import align_address -from .heap import Heap +from pwnlib.heap.heap.heap import Heap +from pwnlib.heap.heap.heap_info import HeapInfoParser class HeapParser: From 02c3b9621ed6e53753290ee9c6d6952553f60dd6 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:41:27 +0100 Subject: [PATCH 077/179] added explicit imports to heap.heap.__init__ --- pwnlib/heap/heap/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/heap/__init__.py b/pwnlib/heap/heap/__init__.py index 5276a1bf6..b2b1e6674 100644 --- a/pwnlib/heap/heap/__init__.py +++ b/pwnlib/heap/heap/__init__.py @@ -1,3 +1,3 @@ -from .heap import * -from .heap_parser import * +from .heap import Heap +from .heap_parser import HeapParser From 5b6210b791e9be53f9e8645247d43a7c9c9ac3bf Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:42:50 +0100 Subject: [PATCH 078/179] added explicit imports to heap.process_informer --- pwnlib/heap/process_informer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/process_informer.py b/pwnlib/heap/process_informer.py index 5ab74cb4c..cde6947f5 100644 --- a/pwnlib/heap/process_informer.py +++ b/pwnlib/heap/process_informer.py @@ -1,6 +1,10 @@ -from .utils import * import os.path import pwnlib.util.proc +from pwnlib.heap.utils import \ + u64, \ + u32, \ + get_libc_version_from_name, \ + get_main_arena_addr class ProcessInformer: From a1e8d5908c7e8069ccf45497b9543b2588f57467 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:43:41 +0100 Subject: [PATCH 079/179] added explicit imports to heap.malloc_chunk --- pwnlib/heap/malloc_chunk.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pwnlib/heap/malloc_chunk.py b/pwnlib/heap/malloc_chunk.py index 39b8d6bc3..c03c52299 100644 --- a/pwnlib/heap/malloc_chunk.py +++ b/pwnlib/heap/malloc_chunk.py @@ -1,5 +1,4 @@ -from .utils import * -from .basic_formatter import * +from pwnlib.heap.utils import p32, p64 class MallocChunkParser: From 6d5c86d05f49127ce3fd088b20a5158f86bcbf3e Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:45:04 +0100 Subject: [PATCH 080/179] added explicit imports to heap.arena.arena --- pwnlib/heap/arena/arena.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/arena/arena.py b/pwnlib/heap/arena/arena.py index 473325b90..c8266148c 100644 --- a/pwnlib/heap/arena/arena.py +++ b/pwnlib/heap/arena/arena.py @@ -1,5 +1,7 @@ -from pwnlib.heap.bins import * -from pwnlib.heap.malloc_state import * +from pwnlib.heap.bins import NoTcacheError +from pwnlib.heap.malloc_state import \ + SMALL_BINS_START_INDEX, \ + LARGE_BINS_START_INDEX from pwnlib.heap.basic_formatter import BasicFormatter From a60b5a5161da7888d96e43e4bf16e2c85bafc2bc Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:45:37 +0100 Subject: [PATCH 081/179] added explicit imports to heap.arena.parser --- pwnlib/heap/arena/parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/arena/parser.py b/pwnlib/heap/arena/parser.py index 165735d21..946b90e14 100644 --- a/pwnlib/heap/arena/parser.py +++ b/pwnlib/heap/arena/parser.py @@ -1,4 +1,4 @@ -from .arena import Arena +from pwnlib.heap.arena.arena import Arena class ArenaParser: From c8eb6810a26d513894334dcdbf90c860f9ba6f2b Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:45:48 +0100 Subject: [PATCH 082/179] added explicit imports to heap.arena.__init__ --- pwnlib/heap/arena/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/arena/__init__.py b/pwnlib/heap/arena/__init__.py index 29ae7580e..490e0e7ae 100644 --- a/pwnlib/heap/arena/__init__.py +++ b/pwnlib/heap/arena/__init__.py @@ -1,3 +1,3 @@ -from .arena import * -from .parser import * +from .arena import Arena +from .parser import ArenaParser From da3e48e8e2df9925368edd87f9ce2d23bc8d73d6 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:47:46 +0100 Subject: [PATCH 083/179] added explicit imports to heap.bins.bin_parser --- pwnlib/heap/bins/bin_parser.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/bins/bin_parser.py b/pwnlib/heap/bins/bin_parser.py index 8d516f4b1..ae23c44aa 100644 --- a/pwnlib/heap/bins/bin_parser.py +++ b/pwnlib/heap/bins/bin_parser.py @@ -1,6 +1,9 @@ -from .small_bin import * -from .large_bin import * -from .unsorted_bin import * +from pwnlib.heap.bins.small_bin import SmallBins, SmallBin, SmallBinEntry +from pwnlib.heap.bins.large_bin import LargeBins, LargeBin, LargeBinEntry +from pwnlib.heap.bins.unsorted_bin import \ + UnsortedBins, \ + UnsortedBin, \ + UnsortedBinEntry class BinParser: From 646950e223ae4e88e145bd8e032b53bd708da2de Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:48:32 +0100 Subject: [PATCH 084/179] added explicit imports to heap.bins.fast_bin --- pwnlib/heap/bins/fast_bin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index 229a7c18a..c4087b6a3 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -1,4 +1,4 @@ -from .bin import * +from pwnlib.heap.bins.bin import Bins, Bin, BinEntry class FastBinParser: From e1c1bfa92352184a010b5a07efebf32fb83d9000 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:48:53 +0100 Subject: [PATCH 085/179] added explicit imports to heap.bins.larg_bin --- pwnlib/heap/bins/large_bin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/bins/large_bin.py index fa4627e56..6a3fda9b8 100644 --- a/pwnlib/heap/bins/large_bin.py +++ b/pwnlib/heap/bins/large_bin.py @@ -1,4 +1,4 @@ -from .bin import * +from pwnlib.heap.bins.bin import Bins, Bin, BinEntry class LargeBins(Bins): From 09caa632852c25dcaa9fe416377f1006b39dd5b4 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:49:08 +0100 Subject: [PATCH 086/179] added explicit imports to heap.bins.small_bin --- pwnlib/heap/bins/small_bin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/bins/small_bin.py index ac70f66b4..8d0d2ae5b 100644 --- a/pwnlib/heap/bins/small_bin.py +++ b/pwnlib/heap/bins/small_bin.py @@ -1,4 +1,4 @@ -from .bin import * +from pwnlib.heap.bins.bin import Bins, Bin, BinEntry class SmallBins(Bins): From 1e3b1ee822a4ba881f80d603cd427aeb00b90927 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:49:22 +0100 Subject: [PATCH 087/179] added explicit imports to heap.bins.unsorted_bin --- pwnlib/heap/bins/unsorted_bin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py index 5cae31451..99847a27a 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -1,4 +1,4 @@ -from .bin import * +from pwnlib.heap.bins.bin import Bins, Bin, BinEntry class UnsortedBins(Bins): From 0f7dc2987c1c168f8438ccd11e3fb565c3e38f99 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:50:07 +0100 Subject: [PATCH 088/179] added explicit imports to heap.bins.tcache.tcache_per_thread_struct --- pwnlib/heap/bins/tcache/tcache_per_thread_struct.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py index e9ee7d93f..2403f6987 100644 --- a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py +++ b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py @@ -1,4 +1,4 @@ -from .entry import TcacheEntry +from pwnlib.heap.bins.tcache.entry import TcacheEntry class TcachePerthreadStructParser: From 345f22f467fc36e14cdb9d55d3af4816546b77b9 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:51:53 +0100 Subject: [PATCH 089/179] added explicit imports to heap.bins.tcache.tcache and moved TcacheEntry into tcache --- pwnlib/heap/bins/tcache/entry.py | 15 --------------- pwnlib/heap/bins/tcache/tcache.py | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 16 deletions(-) delete mode 100644 pwnlib/heap/bins/tcache/entry.py diff --git a/pwnlib/heap/bins/tcache/entry.py b/pwnlib/heap/bins/tcache/entry.py deleted file mode 100644 index d5401ebfc..000000000 --- a/pwnlib/heap/bins/tcache/entry.py +++ /dev/null @@ -1,15 +0,0 @@ -from pwnlib.heap.bins.bin import BinEntry - - -class TcacheEntry(BinEntry): - """Class to contain the information of each entry in - tcache_perthread_struct struct. - - Attributes: - bk (int): 0 since it is not used. - """ - - - def __init__(self, address, fd, chunks_size): - super(TcacheEntry, self).__init__(address, fd, chunks_size=chunks_size) - diff --git a/pwnlib/heap/bins/tcache/tcache.py b/pwnlib/heap/bins/tcache/tcache.py index cf506e6de..7ee26d67d 100644 --- a/pwnlib/heap/bins/tcache/tcache.py +++ b/pwnlib/heap/bins/tcache/tcache.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.bin import * +from pwnlib.heap.bins.bin import Bins, Bin, BinEntry class Tcaches(Bins): @@ -21,3 +21,16 @@ class Tcache(Bin): def __init__(self, bin_entry, malloc_chunks): super(Tcache, self).__init__(bin_entry, malloc_chunks) + + +class TcacheEntry(BinEntry): + """Class to contain the information of each entry in + tcache_perthread_struct struct. + + Attributes: + bk (int): 0 since it is not used. + """ + + def __init__(self, address, fd, chunks_size): + super(TcacheEntry, self).__init__(address, fd, chunks_size=chunks_size) + From d74260993b5089bfd3970840c1a768d94c59d82f Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:52:42 +0100 Subject: [PATCH 090/179] fixed imports to heap.bins.tcache.tcache_per_thread_struct --- pwnlib/heap/bins/tcache/tcache_per_thread_struct.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py index 2403f6987..7ec1d5029 100644 --- a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py +++ b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.tcache.entry import TcacheEntry +from pwnlib.heap.bins.tcache.tcache import TcacheEntry class TcachePerthreadStructParser: From c83128fad29679f34d6cc8c75c4fb73cbb740131 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:53:53 +0100 Subject: [PATCH 091/179] added explicit imports to heap.bins.tcache.parser --- pwnlib/heap/bins/tcache/parser.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/bins/tcache/parser.py b/pwnlib/heap/bins/tcache/parser.py index 191f7ae5c..da58972df 100644 --- a/pwnlib/heap/bins/tcache/parser.py +++ b/pwnlib/heap/bins/tcache/parser.py @@ -1,5 +1,6 @@ -from .tcache_per_thread_struct import * -from .tcache import * +from pwnlib.heap.bins.tcache.tcache_per_thread_struct import \ + TcachePerthreadStructParser +from pwnlib.heap.bins.tcache.tcache import Tcaches, Tcache class TcacheParser: From af0b035efd28831c9615b30472d63d0d12085076 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:55:49 +0100 Subject: [PATCH 092/179] added explicit imports to heap.bins.tcache.__init__ --- pwnlib/heap/bins/tcache/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/bins/tcache/__init__.py b/pwnlib/heap/bins/tcache/__init__.py index 5650261f8..a8aa34144 100644 --- a/pwnlib/heap/bins/tcache/__init__.py +++ b/pwnlib/heap/bins/tcache/__init__.py @@ -1,3 +1,4 @@ from .error import NoTcacheError -from .parser import * +from .parser import TcacheParser +from .tcache import Tcaches, Tcache, TcacheEntry From 87093e76ad402ce3204529fac269aede79a2cd09 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 12:58:53 +0100 Subject: [PATCH 093/179] added explicit imports to heap.bins.__init__ --- pwnlib/heap/bins/__init__.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pwnlib/heap/bins/__init__.py b/pwnlib/heap/bins/__init__.py index f4d25e239..10218f6e5 100644 --- a/pwnlib/heap/bins/__init__.py +++ b/pwnlib/heap/bins/__init__.py @@ -1,8 +1,7 @@ -from .bin import * -from .small_bin import * -from .large_bin import * -from .unsorted_bin import * -from .tcache import * -from .fast_bin import * -from .bin_parser import * +from .small_bin import SmallBins, SmallBin, SmallBinEntry +from .large_bin import LargeBins, LargeBin, LargeBinEntry +from .unsorted_bin import UnsortedBins, UnsortedBin, UnsortedBinEntry +from .tcache import NoTcacheError, TcacheParser, Tcaches, Tcache, TcacheEntry +from .fast_bin import FastBinParser, FastBins, FastBin, FastBinEntry +from .bin_parser import BinParser From be04ecc2a7299d125a1aaeac40d7610f64e58018 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 13:00:34 +0100 Subject: [PATCH 094/179] fixed imports in heap.bins.__init__ and heap.bins.tcache.__init__ --- pwnlib/heap/bins/__init__.py | 8 +++++++- pwnlib/heap/bins/tcache/__init__.py | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/bins/__init__.py b/pwnlib/heap/bins/__init__.py index 10218f6e5..94277a12c 100644 --- a/pwnlib/heap/bins/__init__.py +++ b/pwnlib/heap/bins/__init__.py @@ -2,6 +2,12 @@ from .small_bin import SmallBins, SmallBin, SmallBinEntry from .large_bin import LargeBins, LargeBin, LargeBinEntry from .unsorted_bin import UnsortedBins, UnsortedBin, UnsortedBinEntry -from .tcache import NoTcacheError, TcacheParser, Tcaches, Tcache, TcacheEntry +from .tcache import \ + NoTcacheError, \ + EnabledTcacheParser, \ + DisabledTcacheParser, \ + Tcaches, \ + Tcache, \ + TcacheEntry from .fast_bin import FastBinParser, FastBins, FastBin, FastBinEntry from .bin_parser import BinParser diff --git a/pwnlib/heap/bins/tcache/__init__.py b/pwnlib/heap/bins/tcache/__init__.py index a8aa34144..8d93246ff 100644 --- a/pwnlib/heap/bins/tcache/__init__.py +++ b/pwnlib/heap/bins/tcache/__init__.py @@ -1,4 +1,4 @@ from .error import NoTcacheError -from .parser import TcacheParser +from .parser import EnabledTcacheParser, DisabledTcacheParser from .tcache import Tcaches, Tcache, TcacheEntry From 0c2c5ac7142c69f141b6adc497209830bc221ba3 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 13:02:13 +0100 Subject: [PATCH 095/179] added explicit imports to heap.bins.heap_explorer --- pwnlib/heap/heap_explorer.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 6400ea871..f1960b2bb 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -1,9 +1,13 @@ -from .bins import * -from .arena import ArenaParser -from .malloc_state import MallocStateParser -from .heap import HeapParser -from .malloc_chunk import MallocChunkParser -from .process_informer import ProcessInformer +from pwnlib.heap.bins import \ + BinParser, \ + FastBinParser, \ + EnabledTcacheParser, \ + DisabledTcacheParser +from pwnlib.heap.arena import ArenaParser +from pwnlib.heap.malloc_state import MallocStateParser +from pwnlib.heap.heap import HeapParser +from pwnlib.heap.malloc_chunk import MallocChunkParser +from pwnlib.heap.process_informer import ProcessInformer class HeapExplorer: From 6c978001c7a0cbae2f310b9b94e5b31cb951f64a Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 13:06:03 +0100 Subject: [PATCH 096/179] added imports to heap.__init__ --- pwnlib/heap/__init__.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index abaf84d42..1710055e5 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -320,3 +320,23 @@ """ from .heap_explorer import HeapExplorer +from .arena import Arena +from .malloc_chunk import MallocChunk +from .malloc_state import MallocState +from .heap import Heap +from .bins import \ + Tcaches, \ + Tcache, \ + TcacheEntry, \ + FastBins, \ + FastBin, \ + FastBinParser, \ + UnsortedBins, \ + UnsortedBin,\ + UnsortedBinEntry, \ + SmallBins, \ + SmallBin, \ + SmallBinEntry, \ + LargeBins, \ + LargeBin, \ + LargeBinEntry From 9696b860adc6f6af45b5de02723cf6f0250e9380 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 13:15:42 +0100 Subject: [PATCH 097/179] expanded heap_explorer.arena example scope --- pwnlib/heap/heap_explorer.py | 88 +++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index f1960b2bb..13abbf42b 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -476,7 +476,8 @@ def arena(self, arena_index=0): >>> p = process('sh') >>> hp = p.heap_explorer >>> arena = hp.arena() - >>> print(arena.summary()) # doctest: +SKIP + >>> arena_summary = arena.summary() + >>> print(arena_summary) # doctest: +SKIP ========================== Arena ========================== - Malloc State (0x7fad3f0a5c40) top = 0x564c90e90f20 @@ -499,6 +500,91 @@ def arena(self, arena_index=0): - Large bins [-] No chunks found =========================================================== + >>> arena_str = str(arena) + >>> print(arena_str) # doctest: +SKIP + ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ........ + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ........ + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ + ============================ Heap (0x55c4669fd000) ============================ + 0x55c4669fd000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fd250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x55c4669fd660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + .......... + 0x55c4669fdca0 0x1010 PREV_IN_USE + a0 bc 3f 05 97 7f 00 00 40 ed 9f 66 c4 55 00 00 ..?.....@..f.U.. + 0x55c4669fecb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fed40 0x910 PREV_IN_USE + a0 dc 9f 66 c4 55 00 00 a0 bc 3f 05 97 7f 00 00 ...f.U....?..... + 0x55c4669ff650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669ff6e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ + =================================== Tcaches =================================== + [4] Tcache 0x58 (7) => Chunk(0x55c4669fdb50 0x60 PREV_IN_USE) => Chunk(0x55c4669 + fdaf0 0x60 PREV_IN_USE) => Chunk(0x55c4669fda90 0x60 PREV_IN_USE) => Chunk(0x55c + 4669fda30 0x60 PREV_IN_USE) => Chunk(0x55c4669fd970 0x60 PREV_IN_USE) => Chunk(0 + x55c4669fd910 0x60 PREV_IN_USE) => Chunk(0x55c4669fd8b0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 + 69fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x55c4669fed40 0x910 PREV_IN_USE) => Chunk(0x55c46 + 69fdca0 0x1010 PREV_IN_USE) => 0x7f97053fbca0 + ================================================================================ + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + Returns: :class:`Arena` From 7c9258e68e1aad49b440988efcff53604ef711c9 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 13:18:12 +0100 Subject: [PATCH 098/179] fixed import in heap.heap_explorer --- pwnlib/heap/heap_explorer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 13abbf42b..71ebf8362 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -2,7 +2,8 @@ BinParser, \ FastBinParser, \ EnabledTcacheParser, \ - DisabledTcacheParser + DisabledTcacheParser, \ + NoTcacheError from pwnlib.heap.arena import ArenaParser from pwnlib.heap.malloc_state import MallocStateParser from pwnlib.heap.heap import HeapParser From dac4486dcdf9b344468fd7b98d0bfb28f71668a5 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 13:32:28 +0100 Subject: [PATCH 099/179] removed unused functions from heap.utils --- pwnlib/heap/utils.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pwnlib/heap/utils.py b/pwnlib/heap/utils.py index d67cfd154..5d71986e6 100644 --- a/pwnlib/heap/utils.py +++ b/pwnlib/heap/utils.py @@ -18,18 +18,6 @@ def p64(number): return packing.p64(number) -def read_memory(pid, address, size): - with open('/proc/%s/mem' % pid, 'rb') as mem: - mem.seek(address) - return mem.read(size) - - -def write_memory(pid, address, buffer): - with open('/proc/%s/mem' % pid, 'wb') as mem: - mem.seek(address) - return mem.write(buffer) - - def align_address(address, align): """Align the address to the given size.""" return address + ((align - (address % align)) % align) From badf8d13715011f61e5897f3452615a0684eb551 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 13:45:51 +0100 Subject: [PATCH 100/179] removed unused method __repr__ of MallocState and __str__ of malloc_state.FastBinsY and malloc_state.Bins --- pwnlib/heap/malloc_state/bins/bins.py | 9 ------- pwnlib/heap/malloc_state/fastbinsy.py | 14 ---------- .../malloc_state/malloc_state/malloc_state.py | 27 ------------------- 3 files changed, 50 deletions(-) diff --git a/pwnlib/heap/malloc_state/bins/bins.py b/pwnlib/heap/malloc_state/bins/bins.py index 7bf5abaad..b3fe225bd 100644 --- a/pwnlib/heap/malloc_state/bins/bins.py +++ b/pwnlib/heap/malloc_state/bins/bins.py @@ -48,12 +48,3 @@ def __iter__(self): def __len__(self): return len(self.entries) - - def __str__(self): - string = "" - i = 1 - for bin_entry in self.entries: - string += "{} {}\n".format(i, bin_entry) - i += 1 - - return string diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/malloc_state/fastbinsy.py index 2b95c853a..32d793b7f 100644 --- a/pwnlib/heap/malloc_state/fastbinsy.py +++ b/pwnlib/heap/malloc_state/fastbinsy.py @@ -56,17 +56,3 @@ def __iter__(self): def __len__(self): return len(self.entries) - - def __str__(self): - string = "" - - i = 1 - for fast_bin_entry in self.entries: - string += "{} Fastbin [{:#x}] => {:#x}\n".format( - i, - fast_bin_entry.chunks_size, - fast_bin_entry.fd - ) - i += 1 - - return string diff --git a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py index a7270d3b1..30f758a9b 100644 --- a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py +++ b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py @@ -166,30 +166,3 @@ def _format_malloc_state_bins_as_str(self): index += 1 return "\n".join(string) - - def __repr__(self): - string = "mutex = {:#x}\n".format(self.mutex) - string += "flags = {:#x}\n".format(self.flags) - - if self.have_fastchunks is not None: - string += "have_fastchunks = {:#x}\n".format(self.have_fastchunks) - - string += str(self.fastbinsY) - - string += "top = {:#x}\n".format(self.top) - string += "last_remainder = {:#x}\n".format(self.last_remainder) - string += str(self.bins) - - string += "binmap = [{:#x}, {:#x}, {:#x}, {:#x}]\n".format( - self.binmap[0], - self.binmap[1], - self.binmap[2], - self.binmap[3] - ) - string += "next = {:#x}\n".format(self.next) - string += "next_free = {:#x}\n".format(self.next_free) - string += "attached_threads = {:#x}\n".format(self.attached_threads) - string += "system_mem = {:#x}\n".format(self.system_mem) - string += "max_system_mem = {:#x}\n".format(self.max_system_mem) - - return string From 19b1fe78b9cff4b234b194ca6616f859fa344858 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 17:42:20 +0100 Subject: [PATCH 101/179] added examples to all public methods of HeapExplorer --- pwnlib/heap/heap_explorer.py | 155 +++++++++++++++++++++++++---------- 1 file changed, 110 insertions(+), 45 deletions(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 71ebf8362..1e885536f 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -96,14 +96,15 @@ def _are_tcaches_enabled(self): def arenas_count(self): """Returns the number of arenas + Returns: + int + Examples: >>> p = process('sh') >>> hp = p.heap_explorer - >>> hp.arenas_count() # doctest: +SKIP + >>> number_of_arenas = hp.arenas_count() + >>> number_of_arenas # doctest: +SKIP 2 - - Returns: - int """ return len(self.all_arenas_malloc_states()) @@ -114,15 +115,21 @@ def malloc_state(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`MallocState` + Examples: >>> p = process('sh') >>> hp = p.heap_explorer >>> ms = hp.malloc_state() - >>> hex(ms.top) # doctest: +SKIP + >>> ms_top = ms.top + >>> hex(ms_top) # doctest: +SKIP '0x55c4669ff6e0' - >>> hex(ms.address) # doctest: +SKIP + >>> ms_address = ms.address + >>> hex(ms_address) # doctest: +SKIP '0x7f97053fbc40' - >>> print(ms) # doctest: +SKIP + >>> ms_str = str(ms) + >>> print(ms_str) # doctest: +SKIP ======================== Malloc State (0x7f97053fbc40) ======================== mutex = 0x0 flags = 0x1 @@ -162,9 +169,6 @@ def malloc_state(self, arena_index=0): system_mem = 0x21000 max_system_mem = 0x21000 ================================================================================ - - Returns: - :class:`MallocState` """ return self.all_arenas_malloc_states()[arena_index] @@ -173,6 +177,13 @@ def all_arenas_malloc_states(self): Returns: list of :class:`MallocState` + + Examples: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> mmss = hp.all_arenas_malloc_states() + >>> mmss_str = "\\n".join([str(ms) for ms in mmss]) + >>> print(mmss_str) # doctest: +SKIP """ return self._malloc_state_parser.parse_all_from_main_malloc_state_address( self._main_arena_address @@ -185,15 +196,19 @@ def heap(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`Heap` Examples: >>> p = process('sh') >>> hp = p.heap_explorer >>> heap = hp.heap() - >>> len(heap.chunks) # doctest: +SKIP + >>> number_chunks = len(heap.chunks) + >>> len(number_chunks) # doctest: +SKIP 574 >>> top_chunk = heap.top - >>> hex(top_chunk.address) # doctest: +SKIP + >>> top_chunk_address = top_chunk.address + >>> hex(top_chunk_address) # doctest: +SKIP '0x56080f5dbb00' >>> heap_str = str(heap) >>> print(heap_str) # doctest: +SKIP @@ -241,9 +256,6 @@ def heap(self, arena_index=0): 0x5556351026e0 0x1e920 PREV_IN_USE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ================================================================================ - - Returns: - :class:`Heap` """ malloc_state = self.malloc_state(arena_index) return self._heap_parser.parse_from_malloc_state(malloc_state) @@ -252,7 +264,14 @@ def all_arenas_heaps(self): """Returns the heaps of all arenas Returns: - list of :class:`Heap` + :obj:`list` of :class:`Heap` + + Example: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> hhpp = hp.all_arenas_heaps() + >>> hhpp_str = "\\n".join([str(h) for h in hhpp]) + >>> print(hhpp_str) # doctest: +SKIP """ malloc_states = self.all_arenas_malloc_states() heaps = [] @@ -269,19 +288,20 @@ def unsorted_bin(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`UnsortedBins` + Examples: >>> p = process('sh') >>> hp = p.heap_explorer >>> unsorted_bins = hp.unsorted_bin() - >>> print(unsorted_bins) # doctest: +SKIP + >>> unsorted_bins_str = str(unsorted_bins) + >>> print(unsorted_bins_str) # doctest: +SKIP ================================ Unsorted Bins ================================ [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 ================================================================================ - - Returns: - :class:`UnsortedBins` """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_unsorted_bin_from_malloc_state( @@ -293,6 +313,13 @@ def all_arenas_unsorted_bins(self): Returns: list of :class:`UnsortedBins` + + Example: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> uubb = hp.all_arenas_unsorted_bins() + >>> uubb_str = "\\n".join([str(ub) for ub in uubb]) + >>> print(uubb_str) # doctest: +SKIP """ unsorted_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -310,6 +337,9 @@ def small_bins(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`SmallBins` + Examples: >>> p = process('sh') >>> hp = p.heap_explorer @@ -318,10 +348,6 @@ def small_bins(self, arena_index=0): ================================== Small Bins ================================== [-] No chunks found ================================================================================ - - - Returns: - :class:`SmallBins` """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_small_bins_from_malloc_state( @@ -333,6 +359,13 @@ def all_arenas_small_bins(self): Returns: list of :class:`SmallBins` + + Example: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> bb = hp.all_arenas_small_bins() + >>> bb_str = "\\n".join([str(b) for b in bb]) + >>> print(bb_str) # doctest: +SKIP """ all_small_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -350,6 +383,9 @@ def large_bins(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`LargeBins` + Examples: >>> p = process('sh') >>> hp = p.heap_explorer @@ -358,10 +394,6 @@ def large_bins(self, arena_index=0): ================================== Large Bins ================================== [-] No chunks found ================================================================================ - - - Returns: - :class:`LargeBins` """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_large_bins_from_malloc_state( @@ -372,7 +404,15 @@ def all_arenas_large_bins(self): """Returns the large bins of all arenas Returns: - list of :class:`LargeBins` + :obj:`list` of :class:`LargeBins` + + Example: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> bb = hp.all_arenas_large_bins() + >>> bb_str = "\\n".join([str(b) for b in bb]) + >>> print(bb_str) # doctest: +SKIP + """ all_large_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -390,6 +430,9 @@ def fast_bins(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`FastBins` + Examples: >>> p = process('sh') >>> hp = p.heap_explorer @@ -399,9 +442,6 @@ def fast_bins(self, arena_index=0): [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 5100ba0 0x60 PREV_IN_USE) => 0x0 ================================================================================ - - Returns: - :class:`FastBins` """ malloc_state = self.malloc_state(arena_index) return self._fast_bin_parser.parse_all_from_malloc_state(malloc_state) @@ -410,7 +450,14 @@ def all_arenas_fast_bins(self): """Returns the small bins of all arenas Returns: - list of :class:`FastBin` + :obj:`list` of :class:`FastBins` + + Example: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> bb = hp.all_arenas_fast_bins() + >>> bb_str = "\\n".join([str(b) for b in bb]) + >>> print(bb_str) # doctest: +SKIP """ malloc_states = self.all_arenas_malloc_states() all_fast_bins = [] @@ -427,21 +474,22 @@ def tcaches(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`Tcaches` + >>> p = process('sh') >>> hp = p.heap_explorer - >>> try: # doctest: +SKIP - ... print(hp.tcaches()) + >>> try: + ... tcaches_str = str(hp.tcaches()) ... except NoTcacheError: - ... pass + ... tcaches_str = "" ... + >>> print(tcaches_str) # doctest: +SKIP =================================== Tcaches =================================== [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 ================================================================================ - - Returns: - :class:`Tcache` """ if not self.tcaches_enabled: raise NoTcacheError() @@ -453,7 +501,18 @@ def all_arenas_tcaches(self): """Returns the tcaches of all arenas Returns: - list of :class:`Tcache` + :obj:`list` of :class:`Tcaches` + + Example: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> try: + ... ttcc = hp.all_arenas_tcaches() + ... tcaches_str = "\\n".join([str(tc) for tc in ttcc]) + ... except NoTcacheError: + ... tcaches_str = "" + ... + >>> print(tcaches_str) # doctest: +SKIP """ if not self.tcaches_enabled: raise NoTcacheError() @@ -473,6 +532,9 @@ def arena(self, arena_index=0): arena_index (int, optional): The index of the desired arena. If none is specified, then the index of the main arena will be selected + Returns: + :class:`Arena` + Examples: >>> p = process('sh') >>> hp = p.heap_explorer @@ -585,10 +647,6 @@ def arena(self, arena_index=0): ================================================================================ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - - Returns: - :class:`Arena` """ malloc_state = self.malloc_state(arena_index) return self._arena_parser.parse_from_malloc_state(malloc_state) @@ -597,7 +655,14 @@ def all_arenas(self): """Returns all arenas Returns: - list of :class:`Arena` + :obj:`list` of :class:`Arena` + + Example: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> arenas = hp.all_arenas() + >>> arenas_str = "\\n".join([str(a) for a in arenas]) + >>> print(arenas_str) # doctest: +SKIP """ return self._arena_parser.parse_all_from_main_malloc_state_address( self._main_arena_address From 3c2a72fb7e035cf3bfd3aae681dd4cc64331c8e8 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 17:55:08 +0100 Subject: [PATCH 102/179] included NoTcacheError in heap.__init__ --- pwnlib/heap/__init__.py | 1 + pwnlib/tubes/process.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 1710055e5..e0373337b 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -328,6 +328,7 @@ Tcaches, \ Tcache, \ TcacheEntry, \ + NoTcacheError, \ FastBins, \ FastBin, \ FastBinParser, \ diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 25c79be7a..079223574 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -960,7 +960,7 @@ def heap_explorer(self): heap. Examples: - >>> p = process('sh') + >>> p = process('/bin/cat') >>> hp = p.heap_explorer >>> heap = hp.heap() >>> len(heap.chunks) # doctest: +SKIP From 1edb1054c49a9380fb2e8c1d338c701dd6b897a5 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 18:05:40 +0100 Subject: [PATCH 103/179] added initialization to cat in process examples --- pwnlib/tubes/process.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 079223574..c80be1f8d 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -921,6 +921,7 @@ def libc(self): Example: >>> p = process("/bin/cat") + >>> p.sendline("init") >>> libc = p.libc >>> libc # doctest: +SKIP ELF('/lib64/libc-...so') @@ -961,6 +962,7 @@ def heap_explorer(self): Examples: >>> p = process('/bin/cat') + >>> p.sendline("init") >>> hp = p.heap_explorer >>> heap = hp.heap() >>> len(heap.chunks) # doctest: +SKIP From 30e85e4c04136ac29e96f36a3f24e884ec0745f4 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 18:17:31 +0100 Subject: [PATCH 104/179] removed Fastbin.__repr__ --- pwnlib/heap/bins/fast_bin.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index c4087b6a3..03fef8530 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -69,18 +69,6 @@ class FastBin(Bin): def __init__(self, bin_entry, malloc_chunks): super(FastBin, self).__init__(bin_entry, malloc_chunks) - def __repr__(self): - msg = "Fastbin [size = {:#x}, count = {}] => {:#x}".format( - self.chunks_size, - len(self), - self.fd - ) - - for chunk in self.chunks: - msg += chunk.to_bin_str() - - return msg - def _name(self): return "Fast Bin" From a88294697ce1e538349d30ed35d99775c5534f03 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 18:22:21 +0100 Subject: [PATCH 105/179] removed TcachePerthreadStruct.__repr__ --- pwnlib/heap/bins/tcache/tcache_per_thread_struct.py | 10 ---------- pwnlib/tubes/process.py | 6 ++---- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py index 7ec1d5029..a3a614097 100644 --- a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py +++ b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py @@ -82,13 +82,3 @@ def __init__(self, address, counts, entries): self.counts = counts self.entries = entries - def __str__(self): - string = "" - for i in range(self.TCACHE_MAX_BINS): - string += "{} [{}] {:#x}\n".format( - i, - self.counts[i], - self.entries[i] - ) - return string - diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index c80be1f8d..318375155 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -920,8 +920,7 @@ def libc(self): Example: - >>> p = process("/bin/cat") - >>> p.sendline("init") + >>> p = process('sh') >>> libc = p.libc >>> libc # doctest: +SKIP ELF('/lib64/libc-...so') @@ -961,8 +960,7 @@ def heap_explorer(self): heap. Examples: - >>> p = process('/bin/cat') - >>> p.sendline("init") + >>> p = process('sh') >>> hp = p.heap_explorer >>> heap = hp.heap() >>> len(heap.chunks) # doctest: +SKIP From 0e4ca3893df645c809b10dd6a70b6888045d5a9a Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 18:41:48 +0100 Subject: [PATCH 106/179] added code to examples to make sh use the heap and the bins --- pwnlib/heap/heap_explorer.py | 37 ++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 1e885536f..08de8baef 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -201,6 +201,7 @@ def heap(self, arena_index=0): Examples: >>> p = process('sh') + >>> p.sendline('init='+'A'*0x1000) >>> hp = p.heap_explorer >>> heap = hp.heap() >>> number_chunks = len(heap.chunks) @@ -268,6 +269,7 @@ def all_arenas_heaps(self): Example: >>> p = process('sh') + >>> p.sendline('init='+'A'*0x1000) >>> hp = p.heap_explorer >>> hhpp = hp.all_arenas_heaps() >>> hhpp_str = "\\n".join([str(h) for h in hhpp]) @@ -294,6 +296,7 @@ def unsorted_bin(self, arena_index=0): Examples: >>> p = process('sh') + >>> p.sendline('init='+'A'*0x1000) >>> hp = p.heap_explorer >>> unsorted_bins = hp.unsorted_bin() >>> unsorted_bins_str = str(unsorted_bins) @@ -316,6 +319,7 @@ def all_arenas_unsorted_bins(self): Example: >>> p = process('sh') + >>> p.sendline('init='+'A'*0x1000) >>> hp = p.heap_explorer >>> uubb = hp.all_arenas_unsorted_bins() >>> uubb_str = "\\n".join([str(ub) for ub in uubb]) @@ -342,6 +346,7 @@ def small_bins(self, arena_index=0): Examples: >>> p = process('sh') + >>> p.sendline('init bins') >>> hp = p.heap_explorer >>> small_bins = hp.small_bins() >>> print(small_bins) # doctest: +SKIP @@ -388,6 +393,7 @@ def large_bins(self, arena_index=0): Examples: >>> p = process('sh') + >>> p.sendline('init bins') >>> hp = p.heap_explorer >>> large_bins = hp.large_bins() >>> print(large_bins) # doctest: +SKIP @@ -435,6 +441,7 @@ def fast_bins(self, arena_index=0): Examples: >>> p = process('sh') + >>> p.sendline('init bins') >>> hp = p.heap_explorer >>> fast_bins = hp.fast_bins() >>> print(fast_bins) # doctest: +SKIP @@ -454,6 +461,7 @@ def all_arenas_fast_bins(self): Example: >>> p = process('sh') + >>> p.sendline('init bins') >>> hp = p.heap_explorer >>> bb = hp.all_arenas_fast_bins() >>> bb_str = "\\n".join([str(b) for b in bb]) @@ -477,18 +485,20 @@ def tcaches(self, arena_index=0): Returns: :class:`Tcaches` - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> try: - ... tcaches_str = str(hp.tcaches()) - ... except NoTcacheError: - ... tcaches_str = "" - ... - >>> print(tcaches_str) # doctest: +SKIP - =================================== Tcaches =================================== - [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 - [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 - ================================================================================ + Example: + >>> p = process('sh') + >>> p.sendline('init bins') + >>> hp = p.heap_explorer + >>> try: + ... tcaches_str = str(hp.tcaches()) + ... except NoTcacheError: + ... tcaches_str = "" + ... + >>> print(tcaches_str) # doctest: +SKIP + =================================== Tcaches =================================== + [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 + [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 + ================================================================================ """ if not self.tcaches_enabled: @@ -505,6 +515,7 @@ def all_arenas_tcaches(self): Example: >>> p = process('sh') + >>> p.sendline('init bins') >>> hp = p.heap_explorer >>> try: ... ttcc = hp.all_arenas_tcaches() @@ -537,6 +548,7 @@ def arena(self, arena_index=0): Examples: >>> p = process('sh') + >>> p.sendline('init bins') >>> hp = p.heap_explorer >>> arena = hp.arena() >>> arena_summary = arena.summary() @@ -659,6 +671,7 @@ def all_arenas(self): Example: >>> p = process('sh') + >>> p.sendline('init bins') >>> hp = p.heap_explorer >>> arenas = hp.all_arenas() >>> arenas_str = "\\n".join([str(a) for a in arenas]) From 58d48e6b4702f23af5aa9110597d22d9acb53beb Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 19:08:49 +0100 Subject: [PATCH 107/179] added coverage for bin arrays --- pwnlib/heap/heap_explorer.py | 11 +++++++++++ pwnlib/tubes/process.py | 12 ++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index 08de8baef..e8520da09 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -305,6 +305,15 @@ def unsorted_bin(self, arena_index=0): [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 ================================================================================ + >>> unsorted_bin = unsorted_bins[0] + >>> unsorted_bin_entry = unsorted_bin.bin_entry + >>> unsorted_bin_entry.fd == unsorted_bin.fd + True + >>> unsorted_bin_entry.bk == unsorted_bin.bk + True + >>> unsorted_bin_entry.chunks_size == unsorted_bin.chunks_size + True + """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_unsorted_bin_from_malloc_state( @@ -449,6 +458,8 @@ def fast_bins(self, arena_index=0): [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 5100ba0 0x60 PREV_IN_USE) => 0x0 ================================================================================ + >>> number_of_fastbins = len(fast_bins) + >>> fast_bins_counts = [len(fast_bin) for fast_bin in fast_bins] """ malloc_state = self.malloc_state(arena_index) return self._fast_bin_parser.parse_all_from_malloc_state(malloc_state) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 318375155..35f89fd32 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -920,8 +920,8 @@ def libc(self): Example: - >>> p = process('sh') - >>> libc = p.libc + >>> p = process('sh') # doctest: +SKIP + >>> libc = p.libc # doctest: +SKIP >>> libc # doctest: +SKIP ELF('/lib64/libc-...so') >>> p.close() @@ -960,12 +960,12 @@ def heap_explorer(self): heap. Examples: - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> heap = hp.heap() + >>> p = process('sh') # doctest: +SKIP + >>> hp = p.heap_explorer # doctest: +SKIP + >>> heap = hp.heap() # doctest: +SKIP >>> len(heap.chunks) # doctest: +SKIP 574 - >>> fast_bins = hp.fast_bins() + >>> fast_bins = hp.fast_bins() # doctest: +SKIP >>> print(fast_bins) # doctest: +SKIP ================================== Fast Bins ================================== [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 From b059668b955a47c37e38cf6da79c2281b0f4bf1f Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 19:30:40 +0100 Subject: [PATCH 108/179] expanded scope of MemoryMaps example --- pwnlib/util/proc.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pwnlib/util/proc.py b/pwnlib/util/proc.py index 18146c5d7..588b861bb 100644 --- a/pwnlib/util/proc.py +++ b/pwnlib/util/proc.py @@ -854,7 +854,7 @@ def heap(self): '561ce2895000-561ce28b6000 rw-p 00000000 00:00 0\\t\\t[heap]' """ - return self._lookup_map("[heap]") + return self.lookup_map("[heap]") @property def stack(self): @@ -890,13 +890,19 @@ def stack(self): ... 7ffd9bb45000-7ffd9bb48000 r--p 00000000 00:00 0 [vvar] ... 7ffd9bb48000-7ffd9bb4a000 r-xp 00000000 00:00 0 [vdso] ... \""") + >>> maps_str = str(maps) + >>> maps_addresses = [m.address for m in maps] >>> str(maps.stack) '7ffd9bab9000-7ffd9bada000 rw-p 00000000 00:00 0\\t\\t[stack]' - + >>> try: + ... maps.lookup_map("unknown") + ... except KeyError: + ... print("Not found") + Not found """ - return self._lookup_map("[stack]") + return self.lookup_map("[stack]") - def _lookup_map(self, map_path): + def lookup_map(self, map_path): """Retrieves the first map with the name or file path given Args: From 9c716096a26d7cd25d327cd092abf2f3a954b4f1 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 19:50:52 +0100 Subject: [PATCH 109/179] changed process.libc example to python --- pwnlib/tubes/process.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 35f89fd32..e9d5647ac 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -920,8 +920,8 @@ def libc(self): Example: - >>> p = process('sh') # doctest: +SKIP - >>> libc = p.libc # doctest: +SKIP + >>> p = process('python') + >>> libc = p.libc >>> libc # doctest: +SKIP ELF('/lib64/libc-...so') >>> p.close() From 43a1e2f109a7845d82edbd26b9edf20d229a604d Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 20:09:18 +0100 Subject: [PATCH 110/179] fix raise NotImplementedError in TcacheParser --- pwnlib/heap/bins/tcache/parser.py | 2 +- pwnlib/heap/bins/tcache/tcache_per_thread_struct.py | 5 ++--- pwnlib/tubes/process.py | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pwnlib/heap/bins/tcache/parser.py b/pwnlib/heap/bins/tcache/parser.py index da58972df..67b924ab7 100644 --- a/pwnlib/heap/bins/tcache/parser.py +++ b/pwnlib/heap/bins/tcache/parser.py @@ -8,7 +8,7 @@ class TcacheParser: """ def parse_all_from_malloc_state(self, malloc_state): - raise NotImplemented() + raise NotImplementedError() class DisabledTcacheParser: diff --git a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py index a3a614097..e44f48a44 100644 --- a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py +++ b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py @@ -18,8 +18,8 @@ def __init__(self, process_informer): self._pointer_size = process_informer.pointer_size self._unpack_pointer = process_informer.unpack_pointer self._tcache_perthread_struct_size = self.TCACHE_MAX_BINS + \ - self._pointer_size * \ - self.TCACHE_MAX_BINS + self._pointer_size * \ + self.TCACHE_MAX_BINS def parse_from_address(self, address): """Returns a TcachePerthreadStruct object by parsing the @@ -81,4 +81,3 @@ def __init__(self, address, counts, entries): self.address = address self.counts = counts self.entries = entries - diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index e9d5647ac..76cb75865 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -920,7 +920,7 @@ def libc(self): Example: - >>> p = process('python') + >>> p = process("/bin/cat") >>> libc = p.libc >>> libc # doctest: +SKIP ELF('/lib64/libc-...so') From 96f3b0e8598d2c93a650774f3eeb4fe315918ae1 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 20:19:14 +0100 Subject: [PATCH 111/179] fix format in heap.arena.arena and heap.heap.heap_parser --- pwnlib/heap/arena/arena.py | 1 - pwnlib/heap/heap/heap_parser.py | 1 - 2 files changed, 2 deletions(-) diff --git a/pwnlib/heap/arena/arena.py b/pwnlib/heap/arena/arena.py index c8266148c..76ac0438f 100644 --- a/pwnlib/heap/arena/arena.py +++ b/pwnlib/heap/arena/arena.py @@ -38,7 +38,6 @@ def tcaches(self): return self._tcaches - def __str__(self): msg = [ self._basic_formatter.super_header("Arena"), diff --git a/pwnlib/heap/heap/heap_parser.py b/pwnlib/heap/heap/heap_parser.py index 28a57bf1e..139edc711 100644 --- a/pwnlib/heap/heap/heap_parser.py +++ b/pwnlib/heap/heap/heap_parser.py @@ -94,4 +94,3 @@ def _parse_from_raw(self, heap_address, raw_heap): chunks.append(chunk) return Heap(heap_address, chunks, self._pointer_size) - From 9e6f363f1b048791ff6f9fe156498f75984415d1 Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 20:29:55 +0100 Subject: [PATCH 112/179] added __all__ to heap.__init__ --- pwnlib/heap/__init__.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index e0373337b..dfad0bc9e 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -331,7 +331,7 @@ NoTcacheError, \ FastBins, \ FastBin, \ - FastBinParser, \ + FastBinEntry, \ UnsortedBins, \ UnsortedBin,\ UnsortedBinEntry, \ @@ -341,3 +341,16 @@ LargeBins, \ LargeBin, \ LargeBinEntry + +__all__ = [ + 'HeapExplorer', + 'Arena', + 'MallocChunk', + 'MallocState', + 'Heap', + 'Tcaches', 'Tcache', 'TcacheEntry', 'NoTcacheError', + 'FastBins', 'FastBin', 'FastBinEntry', + 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', + 'SmallBins', 'SmallBin', 'SmallBinEntry', + 'LargeBins', 'LargeBin', 'LargeBinEntry' +] From 52475db076d9df6cf289a45de9fe0148bf1fa86a Mon Sep 17 00:00:00 2001 From: Zer1t0 <1933675-Zer1t0@users.noreply.gitlab.com> Date: Sun, 2 Feb 2020 20:44:47 +0100 Subject: [PATCH 113/179] added __all__ to heap __init__ files --- pwnlib/heap/arena/__init__.py | 4 ++++ pwnlib/heap/bins/__init__.py | 10 ++++++++++ pwnlib/heap/bins/tcache/__init__.py | 5 +++++ pwnlib/heap/heap/__init__.py | 4 ++++ pwnlib/heap/malloc_state/__init__.py | 6 ++++++ pwnlib/heap/malloc_state/bins/__init__.py | 5 +++++ pwnlib/heap/malloc_state/malloc_state/__init__.py | 4 ++++ 7 files changed, 38 insertions(+) diff --git a/pwnlib/heap/arena/__init__.py b/pwnlib/heap/arena/__init__.py index 490e0e7ae..fdf185792 100644 --- a/pwnlib/heap/arena/__init__.py +++ b/pwnlib/heap/arena/__init__.py @@ -1,3 +1,7 @@ from .arena import Arena from .parser import ArenaParser + +__all__ = [ + 'Arena', 'ArenaParser' +] diff --git a/pwnlib/heap/bins/__init__.py b/pwnlib/heap/bins/__init__.py index 94277a12c..ee16ea46a 100644 --- a/pwnlib/heap/bins/__init__.py +++ b/pwnlib/heap/bins/__init__.py @@ -11,3 +11,13 @@ TcacheEntry from .fast_bin import FastBinParser, FastBins, FastBin, FastBinEntry from .bin_parser import BinParser + + +__all__ = [ + 'BinParser', 'EnabledTcacheParser', 'DisabledTcacheParser', + 'Tcaches', 'Tcache', 'TcacheEntry', 'NoTcacheError', + 'FastBinParser', 'FastBins', 'FastBin', 'FastBinEntry', + 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', + 'SmallBins', 'SmallBin', 'SmallBinEntry', + 'LargeBins', 'LargeBin', 'LargeBinEntry' +] diff --git a/pwnlib/heap/bins/tcache/__init__.py b/pwnlib/heap/bins/tcache/__init__.py index 8d93246ff..cc7bcffe8 100644 --- a/pwnlib/heap/bins/tcache/__init__.py +++ b/pwnlib/heap/bins/tcache/__init__.py @@ -2,3 +2,8 @@ from .error import NoTcacheError from .parser import EnabledTcacheParser, DisabledTcacheParser from .tcache import Tcaches, Tcache, TcacheEntry + +__all__ = [ + 'EnabledTcacheParser', 'DisabledTcacheParser', + 'Tcaches', 'Tcache', 'TcacheEntry', 'NoTcacheError', +] \ No newline at end of file diff --git a/pwnlib/heap/heap/__init__.py b/pwnlib/heap/heap/__init__.py index b2b1e6674..674a0e8d7 100644 --- a/pwnlib/heap/heap/__init__.py +++ b/pwnlib/heap/heap/__init__.py @@ -1,3 +1,7 @@ from .heap import Heap from .heap_parser import HeapParser + +__all__ = [ + 'Heap', 'HeapParser' +] diff --git a/pwnlib/heap/malloc_state/__init__.py b/pwnlib/heap/malloc_state/__init__.py index 117e2418d..929b47421 100644 --- a/pwnlib/heap/malloc_state/__init__.py +++ b/pwnlib/heap/malloc_state/__init__.py @@ -6,3 +6,9 @@ UNSORTED_BIN_INDEX, \ SMALL_BINS_START_INDEX, \ LARGE_BINS_START_INDEX + +__all__ = [ + 'MallocState', 'MallocStateParser', + 'FastBinsY', 'Bins', + 'UNSORTED_BIN_INDEX', 'SMALL_BINS_START_INDEX', 'LARGE_BINS_START_INDEX' +] diff --git a/pwnlib/heap/malloc_state/bins/__init__.py b/pwnlib/heap/malloc_state/bins/__init__.py index 16f63550d..fc17a07de 100644 --- a/pwnlib/heap/malloc_state/bins/__init__.py +++ b/pwnlib/heap/malloc_state/bins/__init__.py @@ -3,3 +3,8 @@ from .parser import BinsParser from .bins_indexes import \ UNSORTED_BIN_INDEX, SMALL_BINS_START_INDEX, LARGE_BINS_START_INDEX + +__all__ = [ + 'Bins', 'BinsParser', + 'UNSORTED_BIN_INDEX', 'SMALL_BINS_START_INDEX', 'LARGE_BINS_START_INDEX' +] diff --git a/pwnlib/heap/malloc_state/malloc_state/__init__.py b/pwnlib/heap/malloc_state/malloc_state/__init__.py index 917188734..8b5bc5afb 100644 --- a/pwnlib/heap/malloc_state/malloc_state/__init__.py +++ b/pwnlib/heap/malloc_state/malloc_state/__init__.py @@ -1,3 +1,7 @@ from .malloc_state import MallocState from .parser import MallocStateParser + +__all__ = [ + 'MallocState', 'MallocStateParser', +] From fad98c094bfa3906d2fbbef16762fcdfb3609fce Mon Sep 17 00:00:00 2001 From: Eloy Date: Thu, 20 Feb 2020 22:50:29 +0100 Subject: [PATCH 114/179] added IOError exception handler in bins parser (bin, fast and tcache) to avoid hanging in python2 --- pwnlib/heap/bins/bin_parser.py | 2 +- pwnlib/heap/bins/fast_bin.py | 5 +++-- pwnlib/heap/bins/tcache/parser.py | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pwnlib/heap/bins/bin_parser.py b/pwnlib/heap/bins/bin_parser.py index ae23c44aa..70c270b63 100644 --- a/pwnlib/heap/bins/bin_parser.py +++ b/pwnlib/heap/bins/bin_parser.py @@ -82,7 +82,7 @@ def _parse_from_bin_entry(self, bin_entry): ) chunks.append(chunk) current_address = chunk.fd - except OSError: + except (OSError, IOError): # to avoid hanging in case some pointer is corrupted break diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index 03fef8530..f398273dd 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -41,7 +41,7 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): ) chunks.append(chunk) current_address = chunk.fd - except OSError: + except (OSError, IOError): # to avoid hanging in case some pointer is corrupted break @@ -82,4 +82,5 @@ class FastBinEntry(BinEntry): """ def __init__(self, address, fd, chunks_size): - super(FastBinEntry, self).__init__(address, fd, chunks_size=chunks_size) + super(FastBinEntry, self).__init__( + address, fd, chunks_size=chunks_size) diff --git a/pwnlib/heap/bins/tcache/parser.py b/pwnlib/heap/bins/tcache/parser.py index 67b924ab7..1e91b9ab6 100644 --- a/pwnlib/heap/bins/tcache/parser.py +++ b/pwnlib/heap/bins/tcache/parser.py @@ -53,7 +53,8 @@ def parse_all_from_malloc_state(self, malloc_state): Returns: list of Tcache """ - heap_address, _ = self._heap_parser.calculate_heap_address_and_size_from_malloc_state(malloc_state) + heap_address, _ = self._heap_parser.calculate_heap_address_and_size_from_malloc_state( + malloc_state) return self._parse_all_from_heap_address(heap_address) def _parse_all_from_heap_address(self, heap_address): @@ -81,7 +82,7 @@ def _parse_from_tcache_entry(self, entry): ) chunks.append(chunk) pointer = chunk.fd - except OSError: + except (OSError, IOError): # to avoid hanging in case some pointer is corrupted break From bf30ad4f4aa30c53883f1c1374a0778c2fc42485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 11:42:40 +0100 Subject: [PATCH 115/179] use #: to document Arena attributes --- pwnlib/heap/arena/arena.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/pwnlib/heap/arena/arena.py b/pwnlib/heap/arena/arena.py index 76ac0438f..75f086bbe 100644 --- a/pwnlib/heap/arena/arena.py +++ b/pwnlib/heap/arena/arena.py @@ -7,32 +7,36 @@ class Arena(object): """Class with the information of the arena. - - Attributes: - malloc_state (MallocState): The malloc_state struct of the arena - heap (Heap): The heap of the arena - tcaches (Tcaches): The tcaches of the arena. If - tcaches are not available, an exception :class:`NoTcacheError` is - raised - fast_bins (FastBins): The fast bins of the arena - unsorted_bin (UnsortedBins): The unsorted bin of the arena - small_bins (SmallBins): The small bins of the arena - large_bins (LargeBins): The large bins of the arena """ def __init__(self, malloc_state, heap, unsorted_bin, small_bins, large_bins, fast_bins, tcaches): + #: :class:`MallocState`: The malloc_state struct of the arena self.malloc_state = malloc_state + + #: :class:`Heap`: The heap of the arena self.heap = heap self._tcaches = tcaches + + #: :class:`FastBins`: The fast bins of the arena self.fast_bins = fast_bins + + #: :class:`UnsortedBins`: The unsorted bin of the arena self.unsorted_bin = unsorted_bin + + #: :class:`SmallBins`: The small bins of the arena self.small_bins = small_bins + + #: :class:`LargeBins`: The large bins of the arena self.large_bins = large_bins self._basic_formatter = BasicFormatter() @property def tcaches(self): + """:class:`Tcaches`: The tcaches of the arena. If + tcaches are not available, an exception :class:`NoTcacheError` is + raised. + """ if self._tcaches is None: raise NoTcacheError() From 8a6f2a3091eaaf6a538bfaa0d91b2fe1c036d1ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 11:56:41 +0100 Subject: [PATCH 116/179] use #: to document Bin attributes --- pwnlib/heap/bins/bin.py | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/pwnlib/heap/bins/bin.py b/pwnlib/heap/bins/bin.py index 3447002e8..b3449195c 100644 --- a/pwnlib/heap/bins/bin.py +++ b/pwnlib/heap/bins/bin.py @@ -5,9 +5,6 @@ class Bins(object): """Base class to be inherit by the bins sequences. This class provides the methods to access the bins array as well as standard implementation of the __str__ method. - - Attributes: - bins (:obj:`list` of :class:`Bin`): The bins of the sequence. """ def __init__(self, bins): @@ -16,6 +13,7 @@ def __init__(self, bins): @property def bins(self): + """(:obj:`list` of :class:`Bin`): The bins of the sequence.""" return self._bins def __getitem__(self, item): @@ -72,16 +70,6 @@ def summary(self, start_index=0): class Bin(object): """Base class to be inherit by the bins. This class provides the basic info of the bin entry as well as the chunks of the bin. - - Attributes: - bin_entry (BinEntry): The entry of malloc_state or - tcache_perthread_struct for the bin. - fd (int): Shortcut to the fd pointer of the entry of the current bin. - bk (int): Shortcut to the bk pointer of the entry of the current bin. - chunks_size (int): Size which should have the chunks in the bin. - malloc_chunks (:obj:`list` of :class:`MallocChunk`): The chunks which are - inserted in the bin. - chunks (:obj:`list` of :class:`MallocChunk`): Alias for malloc_chunks. """ def __init__(self, bin_entry, malloc_chunks): @@ -90,26 +78,34 @@ def __init__(self, bin_entry, malloc_chunks): @property def bin_entry(self): + """:class:`BinEntry`: The entry of malloc_state or + tcache_perthread_struct for the bin.""" return self._bin_entry @property def fd(self): + """:class:`int`: Shortcut to the fd pointer of the entry of the current bin.""" return self.bin_entry.fd @property def bk(self): + """:class:`int`: Shortcut to the bk pointer of the entry of the current bin.""" return self.bin_entry.bk @property def chunks_size(self): + """:class:`int`: Size which should have the chunks in the bin.""" return self.bin_entry.chunks_size @property def malloc_chunks(self): + """:obj:`list` of :class:`MallocChunk`: The chunks which are + inserted in the bin.""" return self._malloc_chunks @property def chunks(self): + """:obj:`list` of :class:`MallocChunk`: Alias for malloc_chunks.""" return self.malloc_chunks def __len__(self): @@ -146,17 +142,18 @@ def _name(self): class BinEntry(object): """Class to contain the common information of each bin entry. - - Attributes: - address (int): The address of the bin entry. - fd (int): The address of first chunk of the bin. - bk (int): The address of last chunk of the bin. 0 if not used. - chunks_size (int): Size which should have the chunks in the bin. 0 if - not used. """ def __init__(self, address, fd, bk=0, chunks_size=0): + #: :class:`int`: The address of the bin entry. self.address = address + + #: :class:`int`: The address of first chunk of the bin. self.fd = fd + + #: :class:`int`: The address of last chunk of the bin. 0 if not used. self.bk = bk + + #: :class:`int`: Size which should have the chunks in the bin. 0 if + #: not used. self.chunks_size = chunks_size From 8d2b6257f104905e052fc5cb50901189462eba06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 12:09:01 +0100 Subject: [PATCH 117/179] use #: to document fast bin attributes --- pwnlib/heap/bins/fast_bin.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index f398273dd..8a0272e09 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -50,20 +50,19 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): class FastBins(Bins): """Sequence of fast bins. - - Attributes: - bins (:obj:`list` of :class:`FastBin`): The bins of the sequence. """ def _name(self): return "Fast Bins" + @property + def bins(self): + """:obj:`list` of :class:`FastBin`: The bins of the sequence.""" + return super(FastBins, self).bins + class FastBin(Bin): """Class to represent a fast bin of the glibc. - - Attributes: - bin_entry (FastBinEntry): The entry of malloc_state for the fast bin. """ def __init__(self, bin_entry, malloc_chunks): @@ -72,15 +71,22 @@ def __init__(self, bin_entry, malloc_chunks): def _name(self): return "Fast Bin" + @property + def bin_entry(self): + """:class:`FastBinEntry`: The entry of malloc_state for the fast bin.""" + return super(FastBin, self).bin_entry + class FastBinEntry(BinEntry): """Class to contain the information of a entry in `fastbinsY` attribute of `malloc_state` struct. - - Attributes: - bk (int): 0 since it is not used. """ def __init__(self, address, fd, chunks_size): super(FastBinEntry, self).__init__( address, fd, chunks_size=chunks_size) + + @property + def bk(self): + """:class:`int`: 0 since it is not used.""" + return super(FastBinEntry, self).bk \ No newline at end of file From 4e5b059bf59ad7af854e4c2025e1f0c2f3eefa64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 12:56:13 +0100 Subject: [PATCH 118/179] fix error in FastBinEntry --- pwnlib/heap/bins/fast_bin.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/bins/fast_bin.py index 8a0272e09..c1fe72340 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/bins/fast_bin.py @@ -85,8 +85,3 @@ class FastBinEntry(BinEntry): def __init__(self, address, fd, chunks_size): super(FastBinEntry, self).__init__( address, fd, chunks_size=chunks_size) - - @property - def bk(self): - """:class:`int`: 0 since it is not used.""" - return super(FastBinEntry, self).bk \ No newline at end of file From 2cdf58dddd29a348489e31ff5bd99cb67427ae0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:01:40 +0100 Subject: [PATCH 119/179] use #: to document large bin attributes --- pwnlib/heap/bins/large_bin.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/bins/large_bin.py index 6a3fda9b8..161578146 100644 --- a/pwnlib/heap/bins/large_bin.py +++ b/pwnlib/heap/bins/large_bin.py @@ -3,20 +3,19 @@ class LargeBins(Bins): """Sequence of large bins. - - Attributes: - bins (:obj:`list` of :class:`LargeBin`): The bins of the sequence. """ def _name(self): return "Large Bins" + @property + def bins(self): + """:obj:`list` of :class:`LargeBin`: The bins of the sequence.""" + return super(LargeBins, self).bins + class LargeBin(Bin): """Class to represent an large bin of the glibc. - - Attributes: - bin_entry (LargeBinEntry): The entry of malloc_state for the large bin. """ def __init__(self, bin_entry, malloc_chunks): @@ -29,6 +28,11 @@ def min_chunks_size(self): def _name(self): return "Large Bin" + @property + def bin_entry(self): + """:class:`LargeBinEntry`: The entry of malloc_state for the large bin.""" + return super(LargeBin, self).bin_entry + class LargeBinEntry(BinEntry): """Class to contain the information of a large bin entry in `bins` of From b3eec707c113a276a6ec130d8d2a29ca8d936b53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:05:46 +0100 Subject: [PATCH 120/179] use #: to document small bin attributes --- pwnlib/heap/bins/small_bin.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/bins/small_bin.py index 8d0d2ae5b..fbcae7224 100644 --- a/pwnlib/heap/bins/small_bin.py +++ b/pwnlib/heap/bins/small_bin.py @@ -3,20 +3,19 @@ class SmallBins(Bins): """Sequence of small bins. - - Attributes: - bins (:obj:`list` of :class:`SmallBin`): The bins of the sequence. """ def _name(self): return "Small Bins" + @property + def bins(self): + """:obj:`list` of :class:`SmallBin`: The bins of the sequence.""" + return super(SmallBins, self).bins + class SmallBin(Bin): """Class to represent an small bin of the glibc. - - Attributes: - bin_entry (SmallBinEntry): The entry of malloc_state for the small bin. """ def __init__(self, bin_entry, malloc_chunks): @@ -25,6 +24,11 @@ def __init__(self, bin_entry, malloc_chunks): def _name(self): return "Small Bin" + @property + def bin_entry(self): + """:class:`SmallBinEntry`: The entry of malloc_state for the small bin.""" + return super(SmallBin, self).bin_entry + class SmallBinEntry(BinEntry): """Class to contain the information of a small bin entry in `bins` of From 42df6d36a41396935e13be9fcf8aed1619356004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:17:31 +0100 Subject: [PATCH 121/179] use #: to document unsorted bin attributes --- pwnlib/heap/bins/unsorted_bin.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/bins/unsorted_bin.py index 99847a27a..dde541ddd 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/bins/unsorted_bin.py @@ -5,9 +5,6 @@ class UnsortedBins(Bins): """Sequence of unsorted bins. There is only 1 bin in this sequence, however it is encapsulated in this class for compatibility with the other bin types. - - Attributes: - bins (:obj:`list` of :class:`UnsortedBin`): The bins of the sequence. """ def __init__(self, bin): @@ -16,13 +13,14 @@ def __init__(self, bin): def _name(self): return "Unsorted Bins" + @property + def bins(self): + """:obj:`list` of :class:`UnsortedBin`: The bins of the sequence.""" + return super(UnsortedBins, self).bins + class UnsortedBin(Bin): """Class to represent an unsorted bin of the glibc - - Attributes: - bin_entry (UnsortedBinEntry): The entry of malloc_state for the unsorted - bin. """ def __init__(self, bin_entry, malloc_chunks): @@ -31,13 +29,16 @@ def __init__(self, bin_entry, malloc_chunks): def _name(self): return "Unsorted Bin" + @property + def bin_entry(self): + """:class:`UnsortedBinEntry`: The entry of malloc_state for the unsorted + bin.""" + return super(UnsortedBin, self).bin_entry + class UnsortedBinEntry(BinEntry): """Class to contain the information of a unsorted bin entry in `bins` of malloc state. - - Attributes: - chunks_size (int): 0 since any size is allowed. """ def __init__(self, address, fd, bk): From 20f708794ce433303036d9169d6b5209b69db428 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:20:33 +0100 Subject: [PATCH 122/179] use #: to document tcache attributes --- pwnlib/heap/bins/tcache/tcache.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/pwnlib/heap/bins/tcache/tcache.py b/pwnlib/heap/bins/tcache/tcache.py index 7ee26d67d..51a2a2abe 100644 --- a/pwnlib/heap/bins/tcache/tcache.py +++ b/pwnlib/heap/bins/tcache/tcache.py @@ -3,32 +3,31 @@ class Tcaches(Bins): """Sequence of tcache bins. - - Attributes: - bins (:obj:`list` of :class:`Tcache`): The bins of the sequence. - """ - pass + + @property + def bins(self): + """:obj:`list` of :class:`Tcache`: The bins of the sequence.""" + return super(Tcaches, self).bins class Tcache(Bin): """Class to represent a tcache of the glibc - - Attributes: - bin_entry (TcacheEntry): The entry of tcache_perthread_struct for the - bin. """ def __init__(self, bin_entry, malloc_chunks): super(Tcache, self).__init__(bin_entry, malloc_chunks) + @property + def bin_entry(self): + """:class:`TcacheEntry`: The entry of tcache_perthread_struct for the + bin.""" + return super(Tcache, self).bin_entry + class TcacheEntry(BinEntry): """Class to contain the information of each entry in tcache_perthread_struct struct. - - Attributes: - bk (int): 0 since it is not used. """ def __init__(self, address, fd, chunks_size): From a271f452233daa5b9da190ea41453a9661af3a00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:26:59 +0100 Subject: [PATCH 123/179] use #: to document tcache per thread struct attributes --- .../heap/bins/tcache/tcache_per_thread_struct.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py index e44f48a44..31e7dae6c 100644 --- a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py +++ b/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py @@ -67,17 +67,17 @@ class TcachePerthreadStruct: char counts[TCACHE_MAX_BINS]; tcache_entry *entries[TCACHE_MAX_BINS]; } tcache_perthread_struct; - - Attributes: - counts (list of int): List with indicative counts of chunks of each - tcache - entries (list of TcacheEntry): One entrie per tcache, - which indicates the address of the first chunk in the bin - """ TCACHE_MAX_BINS = 64 def __init__(self, address, counts, entries): + #: :class:`int`: Address of the structure self.address = address + + #: :class:`list` of :class:`int`: List with indicative counts of chunks of each + #: tcache self.counts = counts + + #: :class:`list` of :class:`TcacheEntry`: One entrie per tcache, + #: which indicates the address of the first chunk in the bin self.entries = entries From 85aa480db9a52c5f8fe3a3903e2ff3ad0cbf5be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:29:50 +0100 Subject: [PATCH 124/179] use #: to document heap attributes --- pwnlib/heap/heap/heap.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pwnlib/heap/heap/heap.py b/pwnlib/heap/heap/heap.py index e7305c703..55be0631d 100644 --- a/pwnlib/heap/heap/heap.py +++ b/pwnlib/heap/heap/heap.py @@ -4,21 +4,21 @@ class Heap: """Class to represent a heap with some useful metadata. Heap is considered a collection of chunks. - - Attributes: - address (int): The start address of the heap - chunks (list of :class:`MallocChunk`): The list of chunks of the heap - top (MallocChunk): The Top chunk of the heap """ def __init__(self, address, malloc_chunks, pointer_size): + + #: :class:`int`: The start address of the heap self.address = address + + #: :class:`list` of :class:`MallocChunk`: The list of chunks of the heap self.chunks = malloc_chunks self._pointer_size = pointer_size self._basic_formatter = BasicFormatter() @property def top(self): + """:class:`MallocChunk`: The Top chunk of the heap""" return self.chunks[-1] def __str__(self): From 3d1540db73af52c1e2ff6932405a45bd8dfb0003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:32:34 +0100 Subject: [PATCH 125/179] use #: to document HeapInfo attributes --- pwnlib/heap/heap/heap_info.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pwnlib/heap/heap/heap_info.py b/pwnlib/heap/heap/heap_info.py index 3591f4b93..a8f314f7e 100644 --- a/pwnlib/heap/heap/heap_info.py +++ b/pwnlib/heap/heap/heap_info.py @@ -59,17 +59,18 @@ class HeapInfo: char pad[-6 * SIZE_SZ & MALLOC_ALIGN_MASK]; } heap_info; ``` - - Attributes: - ar_ptr (int): Address of the arena `malloc_state` structure. - prev (int): Address of the previous heap. - size (int): Size of the heap. - mprotect_size (int): Size of the heap which has benn mprotected with - PROT_READ|PROT_WRITE. """ def __init__(self, ar_ptr, prev, size, mprotect_size): + #: :class:`int`: Address of the arena `malloc_state` structure. self.ar_ptr = ar_ptr + + #: :class:`int`: Address of the previous heap. self.prev = prev + + #: :class:`int`: Size of the heap. self.size = size + + #: :class:`int`: Size of the heap which has been mprotected with + #: PROT_READ|PROT_WRITE. self.mprotect_size = mprotect_size From 10c362436d65ce3f9212231da545210014ff74bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:37:31 +0100 Subject: [PATCH 126/179] use #: to document malloc state bins attributes --- pwnlib/heap/malloc_state/bins/bins.py | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/pwnlib/heap/malloc_state/bins/bins.py b/pwnlib/heap/malloc_state/bins/bins.py index b3fe225bd..3a4434a75 100644 --- a/pwnlib/heap/malloc_state/bins/bins.py +++ b/pwnlib/heap/malloc_state/bins/bins.py @@ -4,39 +4,30 @@ class Bins: """Class to represent the `bins` attribute of malloc_state struct. - - Attributes: - entries (list of :class:`BinEntry`): entries with pointers to the first - and last chunks of the each double linked bin. """ def __init__(self, entries): + #: :class:`list` of :class:`BinEntry`: Entries with pointers to the first + #: and last chunks of the each double linked bin. self.entries = entries @property def unsorted_bin_entry(self): - """Returns the entry of the unsorted bin. - - Returns: - BinEntry + """:class:`BinEntry`: Returns the entry of the unsorted bin. """ return self.entries[UNSORTED_BIN_INDEX] @property def small_bins_entries(self): - """Returns the entries of the small bins. - - Returns: - :obj:`list` of :class:`BinEntry` + """:obj:`list` of :class:`BinEntry`: Returns the entries of + the small bins. """ return self.entries[SMALL_BINS_START_INDEX:LARGE_BINS_START_INDEX] @property def large_bins_entries(self): - """Returns the entries of the large bins. - - Returns: - :obj:`list` of :class:`BinEntry` + """:obj:`list` of :class:`BinEntry`: Returns the entries of + the large bins. """ return self.entries[LARGE_BINS_START_INDEX:] From d02de969fb2de222505ed0faee2126726a71296b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:39:12 +0100 Subject: [PATCH 127/179] use #: to document malloc state fastbinsy attributes --- pwnlib/heap/malloc_state/fastbinsy.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/malloc_state/fastbinsy.py index 32d793b7f..5cfa34fa3 100644 --- a/pwnlib/heap/malloc_state/fastbinsy.py +++ b/pwnlib/heap/malloc_state/fastbinsy.py @@ -39,13 +39,11 @@ def parse_from_collection(self, base_address, collection_array): class FastBinsY: """Class to represent the `fastbinsY` attribute of malloc_state struct. - - Attributes: - entries (list of :class:`FastBinEntry`): pointers to the first chunks - of the each fast bin. """ def __init__(self, entries): + #: :class:`list` of :class:`FastBinEntry`: Pointers to the first chunks + #: of the each fast bin. self.entries = entries def __getitem__(self, index): From d74886b1bc1b30daa66e0e836a4335777875d9ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 13:53:09 +0100 Subject: [PATCH 128/179] use #: to document malloc chunk attributes --- pwnlib/heap/malloc_chunk.py | 51 ++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/pwnlib/heap/malloc_chunk.py b/pwnlib/heap/malloc_chunk.py index c03c52299..9db266f15 100644 --- a/pwnlib/heap/malloc_chunk.py +++ b/pwnlib/heap/malloc_chunk.py @@ -105,42 +105,51 @@ class MallocChunk: struct malloc_chunk* fd_nextsize; struct malloc_chunk* bk_nextsize; }; - - - Attributes: - address (int): The start address of the chunk - previous_size (int): Size of the previous chunk (if previous is free) - size (int): Size of the chunk - prev_in_use (bool): True if previous chunk is being used (not free) - mmapped (bool): True if chunk is allocated through mmap - non_main_arena (bool): True if chunk resides in the main arena - fd (int): Pointer to the next chunk of the bins (if chunk is free) - bk (int): Pointer to the previous chunk of the bins (if chunk is free) - fd_nextsize (int): Pointer to the next chunk with a larger size - (only used in large bins) - bk_nextsize (int): Pointer to the next chunk with an smaller size - (only used in large bins) - data_address (int): Address where starts the chunk user data - (the address returned by malloc) - size_with_flags (int): The raw size value of the chunk, which includes - the NON_MAIN_ARENA, MMAPPED and PREV_IN_USE flags in the - lowest-value bits - """ def __init__(self, address, previous_size, size, prev_in_use, mmapped, non_main_arena, fd, bk, fd_nextsize, bk_nextsize, pointer_size): + #: :class:`int`: The start address of the chunk self.address = address + + #: :class:`int`: Size of the previous chunk (if previous is free) self.previous_size = previous_size + + #: :class:`int`: Size of the chunk self.size = size + + #: :class:`bool`: True if previous chunk is being used (not free) self.prev_in_use = prev_in_use + + #: :class:`bool`: True if chunk is allocated through mmap self.mmapped = mmapped + + #: :class:`bool`: True if chunk resides in the main arena self.non_main_arena = non_main_arena + + #: :class:`int`: Pointer to the next chunk of the bins (if chunk + #: is free) self.fd = fd + + #: :class:`int`: Pointer to the previous chunk of the bins (if chunk + #: is free) self.bk = bk + + #: :class:`int`: Pointer to the next chunk with a larger size + #: (only used in large bins) self.fd_nextsize = fd_nextsize + + #: :class:`int`: Pointer to the next chunk with an smaller size + #: (only used in large bins) self.bk_nextsize = bk_nextsize + + #: :class:`int`: Address where starts the chunk user data + #: (the address returned by malloc) self.data_address = self.address + pointer_size * 2 + + #: :class:`int`: The raw size value of the chunk, which includes + #: the NON_MAIN_ARENA, MMAPPED and PREV_IN_USE flags in the + #: lowest-value bits self.size_with_flags = size | int(non_main_arena)*4 | int(mmapped)*2 | int(prev_in_use) if pointer_size == 8: From f846e685dbb698aecd372bf5c9993fc09116e752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 14:09:26 +0100 Subject: [PATCH 129/179] use #: to document malloc state attributes --- .../malloc_state/malloc_state/malloc_state.py | 58 ++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py index 30f758a9b..800aff887 100644 --- a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py +++ b/pwnlib/heap/malloc_state/malloc_state/malloc_state.py @@ -33,57 +33,73 @@ class MallocState: The field attached_threads was introduced in libc version 2.23. In case libc version is inferior that field value will be None. - - Attributes: - mutex (int): Mutex value of the malloc_state - flags (int): Flags of the malloc_state - have_fastchunks (int or None): Indicates if there are chunks in the - fastbins - fastbinsY (FastBinsY): Fast bin entries - top (int): Pointer to the top chunk of the heap - last_remainder (int): Pointer to the last remainder chunk - bins (Bins): All bins entries of the malloc_state (Unsorted, Small and - Large) - unsorted_bin (BinEntry): Unsorted bin entry of the malloc_state - small_bins (list of BinEntry): Small bins entries of the malloc_state - large_bins (list of BinEntry): Large bins entries of the malloc_state - binmap (list[4] of int): Bitmap which indicates the bins with chunks - next (int): Address of the next malloc_state struct - next_free (int or None): - attached_threads (int): Number of threads attached to the arena - system_mem (int): Available heap size - max_system_mem (int): Maximum heap size - """ + """ def __init__(self, address, mutex, flags, have_fastchunks, fastbinsY, top, last_remainder, bins, binmap, next_, next_free, attached_threads, system_mem, max_system_mem): + + #: :class:`int`: Address of the malloc_state self.address = address + + #: :class:`int`: Mutex value of the malloc_state self.mutex = mutex + + #: :class:`int`: Flags of the malloc_state self.flags = flags + + #: :class:`int` or :class:`None`: Indicates if there are chunks in the + #: fastbins self.have_fastchunks = have_fastchunks + + #: :class:`FastBinsY`: Fast bin entries self.fastbinsY = fastbinsY + + #: :class:`int`: Pointer to the top chunk of the heap self.top = top + + #: :class:`int`: Pointer to the last remainder chunk self.last_remainder = last_remainder + + #: :class:`Bins`: All bins entries of the malloc_state (Unsorted, + #: Small and Large) self.bins = bins + + #: :class:`list[4]` of :class:`int`: Bitmap which indicates the bins + #: with chunks self.binmap = binmap + + #: :class:`int`: Address of the next malloc_state struct self.next = next_ + + #: :class:`int` or :class:`None` self.next_free = next_free + + #: :class:`int`: Number of threads attached to the arena self.attached_threads = attached_threads + + #: :class:`int`: Available heap size self.system_mem = system_mem + + #: :class:`int`: Maximum heap size self.max_system_mem = max_system_mem self._basic_formatter = BasicFormatter() @property def unsorted_bin(self): + """:class:`BinEntry`: Unsorted bin entry of the malloc_state""" return self.bins.unsorted_bin_entry @property def small_bins(self): + """:class:`list` of :class:`BinEntry`: Small bins entries of the + malloc_state""" return self.bins.small_bins_entries @property def large_bins(self): + """:class:`list` of :class:`BinEntry`: Large bins entries of the + malloc_state""" return self.bins.large_bins_entries def __str__(self): From 239e7f01b136b79bf4449eb355af8c4ec11ebf2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 14:13:01 +0100 Subject: [PATCH 130/179] use #: to document heap explorer attributes --- pwnlib/heap/heap_explorer.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/heap_explorer.py index e8520da09..c910d0534 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/heap_explorer.py @@ -15,10 +15,6 @@ class HeapExplorer: """Main class of the library. which functions to access to all items of the glibc heap management, such as arenas, malloc_state, heap and bins. - Attributes: - tcaches_enabled(bool): Indicates if tcaches are enabled for the current - glibc version. - Examples: >>> p = process('sh') >>> hp = p.heap_explorer @@ -68,6 +64,8 @@ def __init__(self, pid, libc): self._bin_parser = BinParser(malloc_chunk_parser) self._fast_bin_parser = FastBinParser(malloc_chunk_parser) + #: :class:`bool`: Indicates if tcaches are enabled for the current + #: glibc version. self.tcaches_enabled = self._are_tcaches_enabled() if self.tcaches_enabled: From 21b6782c348fef11badd05d935af0a093b77b0b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 17:39:03 +0100 Subject: [PATCH 131/179] create glmalloc module --- pwnlib/heap/__init__.py | 331 +--------------- pwnlib/heap/glmalloc/__init__.py | 356 ++++++++++++++++++ pwnlib/heap/{ => glmalloc}/arena/__init__.py | 0 pwnlib/heap/{ => glmalloc}/arena/arena.py | 6 +- pwnlib/heap/{ => glmalloc}/arena/parser.py | 2 +- pwnlib/heap/{ => glmalloc}/basic_formatter.py | 0 pwnlib/heap/{ => glmalloc}/bins/__init__.py | 0 pwnlib/heap/{ => glmalloc}/bins/bin.py | 2 +- pwnlib/heap/{ => glmalloc}/bins/bin_parser.py | 6 +- pwnlib/heap/{ => glmalloc}/bins/fast_bin.py | 2 +- pwnlib/heap/{ => glmalloc}/bins/large_bin.py | 2 +- pwnlib/heap/{ => glmalloc}/bins/small_bin.py | 2 +- .../{ => glmalloc}/bins/tcache/__init__.py | 0 .../heap/{ => glmalloc}/bins/tcache/error.py | 0 .../heap/{ => glmalloc}/bins/tcache/parser.py | 4 +- .../heap/{ => glmalloc}/bins/tcache/tcache.py | 2 +- .../bins/tcache/tcache_per_thread_struct.py | 2 +- .../heap/{ => glmalloc}/bins/unsorted_bin.py | 2 +- pwnlib/heap/{ => glmalloc}/heap/__init__.py | 0 pwnlib/heap/{ => glmalloc}/heap/heap.py | 2 +- pwnlib/heap/{ => glmalloc}/heap/heap_info.py | 0 .../heap/{ => glmalloc}/heap/heap_parser.py | 6 +- pwnlib/heap/{ => glmalloc}/heap_explorer.py | 12 +- pwnlib/heap/{ => glmalloc}/malloc_chunk.py | 2 +- .../{ => glmalloc}/malloc_state/__init__.py | 0 .../malloc_state/bins/__init__.py | 0 .../{ => glmalloc}/malloc_state/bins/bins.py | 2 +- .../malloc_state/bins/bins_indexes.py | 0 .../malloc_state/bins/parser.py | 4 +- .../{ => glmalloc}/malloc_state/fastbinsy.py | 4 +- .../malloc_state/malloc_state/__init__.py | 0 .../malloc_state/malloc_state/malloc_state.py | 2 +- .../malloc_state/malloc_state/parser.py | 4 +- .../heap/{ => glmalloc}/process_informer.py | 2 +- pwnlib/heap/{ => glmalloc}/utils.py | 0 35 files changed, 398 insertions(+), 361 deletions(-) create mode 100644 pwnlib/heap/glmalloc/__init__.py rename pwnlib/heap/{ => glmalloc}/arena/__init__.py (100%) rename pwnlib/heap/{ => glmalloc}/arena/arena.py (95%) rename pwnlib/heap/{ => glmalloc}/arena/parser.py (97%) rename pwnlib/heap/{ => glmalloc}/basic_formatter.py (100%) rename pwnlib/heap/{ => glmalloc}/bins/__init__.py (100%) rename pwnlib/heap/{ => glmalloc}/bins/bin.py (98%) rename pwnlib/heap/{ => glmalloc}/bins/bin_parser.py (94%) rename pwnlib/heap/{ => glmalloc}/bins/fast_bin.py (97%) rename pwnlib/heap/{ => glmalloc}/bins/large_bin.py (95%) rename pwnlib/heap/{ => glmalloc}/bins/small_bin.py (95%) rename pwnlib/heap/{ => glmalloc}/bins/tcache/__init__.py (100%) rename pwnlib/heap/{ => glmalloc}/bins/tcache/error.py (100%) rename pwnlib/heap/{ => glmalloc}/bins/tcache/parser.py (95%) rename pwnlib/heap/{ => glmalloc}/bins/tcache/tcache.py (93%) rename pwnlib/heap/{ => glmalloc}/bins/tcache/tcache_per_thread_struct.py (98%) rename pwnlib/heap/{ => glmalloc}/bins/unsorted_bin.py (95%) rename pwnlib/heap/{ => glmalloc}/heap/__init__.py (100%) rename pwnlib/heap/{ => glmalloc}/heap/heap.py (95%) rename pwnlib/heap/{ => glmalloc}/heap/heap_info.py (100%) rename pwnlib/heap/{ => glmalloc}/heap/heap_parser.py (95%) rename pwnlib/heap/{ => glmalloc}/heap_explorer.py (98%) rename pwnlib/heap/{ => glmalloc}/malloc_chunk.py (99%) rename pwnlib/heap/{ => glmalloc}/malloc_state/__init__.py (100%) rename pwnlib/heap/{ => glmalloc}/malloc_state/bins/__init__.py (100%) rename pwnlib/heap/{ => glmalloc}/malloc_state/bins/bins.py (95%) rename pwnlib/heap/{ => glmalloc}/malloc_state/bins/bins_indexes.py (100%) rename pwnlib/heap/{ => glmalloc}/malloc_state/bins/parser.py (96%) rename pwnlib/heap/{ => glmalloc}/malloc_state/fastbinsy.py (93%) rename pwnlib/heap/{ => glmalloc}/malloc_state/malloc_state/__init__.py (100%) rename pwnlib/heap/{ => glmalloc}/malloc_state/malloc_state/malloc_state.py (98%) rename pwnlib/heap/{ => glmalloc}/malloc_state/malloc_state/parser.py (98%) rename pwnlib/heap/{ => glmalloc}/process_informer.py (97%) rename pwnlib/heap/{ => glmalloc}/utils.py (100%) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index dfad0bc9e..72939ccd7 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -1,330 +1,11 @@ # -*- coding: utf-8 -*- -""" -During heap exploit development, it is frequently useful to obtain an -image of the heap layout as well as of the bins used by the glibc. - -To provide access to the heap items, an :class:`HeapExplorer` has to be used, -which can be obtained from :attr:`pwnlib.tubes.process.heap_explorer` - -Examples ----------- - -Get a summary of the items of the arena: - - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> print(hp.arena().summary()) # doctest: +SKIP - ========================== Arena ========================== - - Malloc State (0x7fad3f0a5c40) - top = 0x564c90e90f20 - last_remainder = 0x0 - next = 0x7fad3f0a5c40 - next_free = 0x0 - system_mem = 0x21000 - - Heap (0x564c90e83000) - chunks_count = 0x245 - top: addr = 0x564c90e90f20, size = 0x130e0 - - Tcaches - [23] 0x188 (1) - [41] 0x2a8 (1) - - Fast bins - [-] No chunks found - - Unsorted bins - [-] No chunks found - - Small bins - [-] No chunks found - - Large bins - [-] No chunks found - =========================================================== - -View the malloc state: - - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> print(hp.malloc_state()) # doctest: +SKIP - ======================== Malloc State (0x7f97053fbc40) ======================== - mutex = 0x0 - flags = 0x1 - have_fastchunks = 0x0 - fastbinsY - [0] 0x20 => 0x0 - [1] 0x30 => 0x0 - [2] 0x40 => 0x0 - [3] 0x50 => 0x0 - [4] 0x60 => 0x55c4669fdc20 - [5] 0x70 => 0x0 - [6] 0x80 => 0x0 - [7] 0x90 => 0x0 - [8] 0xa0 => 0x0 - [9] 0xb0 => 0x0 - top = 0x55c4669ff6e0 - last_remainder = 0x0 - bins - Unsorted bins - [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 - Small bins - [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 - [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 - ....... - [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 - [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 - Large bins - [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 - [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 - ...... - [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 - [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 - binmap = [0x0, 0x0, 0x0, 0x0] - next = 0x7f96f8000020 - next_free = 0x0 - attached_threads = 0x1 - system_mem = 0x21000 - max_system_mem = 0x21000 - ================================================================================ - - -List the chunks of the bins: - - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> print(hp.tcaches()) # doctest: +SKIP - =================================== Tcaches =================================== - [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 - [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 - ================================================================================ - >>> print(hp.fast_bins()) # doctest: +SKIP - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 - 5100ba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - >>> print(hp.unsorted_bin()) # doctest: +SKIP - ================================ Unsorted Bins ================================ - [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 - 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 - ================================================================================ - >>> print(hp.small_bins()) # doctest: +SKIP - ================================== Small Bins ================================== - [-] No chunks found - ================================================================================ - >>> print(hp.large_bins()) # doctest: +SKIP - ================================== Large Bins ================================== - [-] No chunks found - ================================================================================ - - - -List the chunks of the arena heap: - - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> print(hp.heap()) # doctest: +SKIP - ============================ Heap (0x555635100000) ============================ - 0x555635100000 0x250 PREV_IN_USE - 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100250 0x410 PREV_IN_USE - 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = - 0x555635100660 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100780 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x5556351008a0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 10 00 10 35 56 55 00 00 ...........5VU.. - 0x555635100900 0x60 PREV_IN_USE - b0 08 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100960 0x60 PREV_IN_USE - 10 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x5556351009c0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100a20 0x60 PREV_IN_USE - 70 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 p..5VU.....5VU.. - 0x555635100a80 0x60 PREV_IN_USE - 30 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 0..5VU.....5VU.. - 0x555635100ae0 0x60 PREV_IN_USE - 90 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100b40 0x60 PREV_IN_USE - f0 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100ba0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100c00 0x20 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100c20 0x60 PREV_IN_USE - a0 0b 10 35 56 55 00 00 00 00 00 00 00 00 00 00 ...5VU.......... - 0x555635100c80 0x20 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100ca0 0x1010 PREV_IN_USE - a0 9c 6e d6 8b 7f 00 00 40 1d 10 35 56 55 00 00 ..n.....@..5VU.. - 0x555635101cb0 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635101d40 0x910 PREV_IN_USE - a0 0c 10 35 56 55 00 00 a0 9c 6e d6 8b 7f 00 00 ...5VU....n..... - 0x555635102650 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x5556351026e0 0x1e920 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - ================================================================================ - -Get all the arena information: - - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> print(hp.arena()) # doctest: +SKIP - ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ======================== Malloc State (0x7f97053fbc40) ======================== - mutex = 0x0 - flags = 0x1 - have_fastchunks = 0x0 - fastbinsY - [0] 0x20 => 0x0 - [1] 0x30 => 0x0 - [2] 0x40 => 0x0 - [3] 0x50 => 0x0 - [4] 0x60 => 0x55c4669fdc20 - [5] 0x70 => 0x0 - [6] 0x80 => 0x0 - [7] 0x90 => 0x0 - [8] 0xa0 => 0x0 - [9] 0xb0 => 0x0 - top = 0x55c4669ff6e0 - last_remainder = 0x0 - bins - Unsorted bins - [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 - Small bins - [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 - [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 - ........ - [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 - [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 - Large bins - [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 - [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 - ........ - [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 - [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 - binmap = [0x0, 0x0, 0x0, 0x0] - next = 0x7f96f8000020 - next_free = 0x0 - attached_threads = 0x1 - system_mem = 0x21000 - max_system_mem = 0x21000 - ================================================================================ - ============================ Heap (0x55c4669fd000) ============================ - 0x55c4669fd000 0x250 PREV_IN_USE - 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669fd250 0x410 PREV_IN_USE - 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = - 0x55c4669fd660 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - .......... - 0x55c4669fdca0 0x1010 PREV_IN_USE - a0 bc 3f 05 97 7f 00 00 40 ed 9f 66 c4 55 00 00 ..?.....@..f.U.. - 0x55c4669fecb0 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669fed40 0x910 PREV_IN_USE - a0 dc 9f 66 c4 55 00 00 a0 bc 3f 05 97 7f 00 00 ...f.U....?..... - 0x55c4669ff650 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669ff6e0 0x1e920 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - ================================================================================ - =================================== Tcaches =================================== - [4] Tcache 0x58 (7) => Chunk(0x55c4669fdb50 0x60 PREV_IN_USE) => Chunk(0x55c4669 - fdaf0 0x60 PREV_IN_USE) => Chunk(0x55c4669fda90 0x60 PREV_IN_USE) => Chunk(0x55c - 4669fda30 0x60 PREV_IN_USE) => Chunk(0x55c4669fd970 0x60 PREV_IN_USE) => Chunk(0 - x55c4669fd910 0x60 PREV_IN_USE) => Chunk(0x55c4669fd8b0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 - 69fdba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================ Unsorted Bins ================================ - [0] Unsorted Bin (2) => Chunk(0x55c4669fed40 0x910 PREV_IN_USE) => Chunk(0x55c46 - 69fdca0 0x1010 PREV_IN_USE) => 0x7f97053fbca0 - ================================================================================ - ================================== Small Bins ================================== - [-] No chunks found - ================================================================================ - ================================== Large Bins ================================== - [-] No chunks found - ================================================================================ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - -Access to items of the non main arena: - >>> p = process('sh') - >>> hp = p.heap_explorer - >>> hp.arenas_count() # doctest: +SKIP - 2 - >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] # doctest: +SKIP - ==================================== Arena ==================================== - - Malloc State (0x7f97053fbc40) - top = 0x55c4669ff6e0 - last_remainder = 0x0 - next = 0x7f9700000020 - next_free = 0x0 - system_mem = 0x21000 - - Heap (0x55c4669fd000) - chunks_count = 0x15 - top: addr = 0x55c4669ff6e0, size = 0x1e920 - - Tcaches - [4] 0x58 (7) - - Fast bins - [4] 0x60 (2) - - Unsorted bins - [0] 0x0 (2) - - Small bins - [-] No chunks found - - Large bins - [-] No chunks found - ================================================================================ - ==================================== Arena ==================================== - - Malloc State (0x7f9700000020) - top = 0x7f9700002b30 - last_remainder = 0x0 - next = 0x7f97053fbc40 - next_free = 0x0 - system_mem = 0x21000 - - Heap (0x7f97000008c0) - chunks_count = 0x4 - top: addr = 0x7f9700002b30, size = 0x1e4d0 - - Tcaches - [-] No chunks found - - Fast bins - [-] No chunks found - - Unsorted bins - [-] No chunks found - - Small bins - [-] No chunks found - - Large bins - [-] No chunks found - ================================================================================ - >>> _ = [print(ms) for ms in hp.all_arenas_fast_bins()] # doctest: +SKIP - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 - 69fdba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================== Fast Bins ================================== - [-] No chunks found - ================================================================================ - >>> print(hp.fast_bins()) # doctest: +SKIP - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c4669fdba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - >>> print(hp.fast_bins(arena_index=1)) # doctest: +SKIP - ================================== Fast Bins ================================== - [-] No chunks found - ================================================================================ - -""" - -from .heap_explorer import HeapExplorer -from .arena import Arena -from .malloc_chunk import MallocChunk -from .malloc_state import MallocState -from .heap import Heap -from .bins import \ +from pwnlib.heap.glmalloc.heap_explorer import HeapExplorer +from pwnlib.heap.glmalloc.arena import Arena +from pwnlib.heap.glmalloc.malloc_chunk import MallocChunk +from pwnlib.heap.glmalloc.malloc_state import MallocState +from pwnlib.heap.glmalloc.heap import Heap +from pwnlib.heap.glmalloc.bins import \ Tcaches, \ Tcache, \ TcacheEntry, \ diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py new file mode 100644 index 000000000..7a30c20c8 --- /dev/null +++ b/pwnlib/heap/glmalloc/__init__.py @@ -0,0 +1,356 @@ +# -*- coding: utf-8 -*- +""" +During heap exploit development, it is frequently useful to obtain an +image of the heap layout as well as of the bins used by the glibc. + + +To provide access to the heap items, an :class:`HeapExplorer` has to be used, +which can be obtained from :attr:`pwnlib.tubes.process.heap_explorer` + +Examples +---------- + +Get a summary of the items of the arena: + + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> print(hp.arena().summary()) # doctest: +SKIP + ========================== Arena ========================== + - Malloc State (0x7fad3f0a5c40) + top = 0x564c90e90f20 + last_remainder = 0x0 + next = 0x7fad3f0a5c40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x564c90e83000) + chunks_count = 0x245 + top: addr = 0x564c90e90f20, size = 0x130e0 + - Tcaches + [23] 0x188 (1) + [41] 0x2a8 (1) + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + =========================================================== + +View the malloc state: + + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> print(hp.malloc_state()) # doctest: +SKIP + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ....... + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ...... + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ + + +List the chunks of the bins: + + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> print(hp.tcaches()) # doctest: +SKIP + =================================== Tcaches =================================== + [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 + [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.fast_bins()) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 + 5100ba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.unsorted_bin()) # doctest: +SKIP + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 + 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 + ================================================================================ + >>> print(hp.small_bins()) # doctest: +SKIP + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + >>> print(hp.large_bins()) # doctest: +SKIP + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ + + + +List the chunks of the arena heap: + + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> print(hp.heap()) # doctest: +SKIP + ============================ Heap (0x555635100000) ============================ + 0x555635100000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x555635100660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100780 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351008a0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 10 00 10 35 56 55 00 00 ...........5VU.. + 0x555635100900 0x60 PREV_IN_USE + b0 08 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100960 0x60 PREV_IN_USE + 10 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x5556351009c0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100a20 0x60 PREV_IN_USE + 70 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 p..5VU.....5VU.. + 0x555635100a80 0x60 PREV_IN_USE + 30 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 0..5VU.....5VU.. + 0x555635100ae0 0x60 PREV_IN_USE + 90 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100b40 0x60 PREV_IN_USE + f0 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100ba0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c00 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c20 0x60 PREV_IN_USE + a0 0b 10 35 56 55 00 00 00 00 00 00 00 00 00 00 ...5VU.......... + 0x555635100c80 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100ca0 0x1010 PREV_IN_USE + a0 9c 6e d6 8b 7f 00 00 40 1d 10 35 56 55 00 00 ..n.....@..5VU.. + 0x555635101cb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635101d40 0x910 PREV_IN_USE + a0 0c 10 35 56 55 00 00 a0 9c 6e d6 8b 7f 00 00 ...5VU....n..... + 0x555635102650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351026e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ + +Get all the arena information: + + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> print(hp.arena()) # doctest: +SKIP + ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ........ + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ........ + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ + ============================ Heap (0x55c4669fd000) ============================ + 0x55c4669fd000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fd250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x55c4669fd660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + .......... + 0x55c4669fdca0 0x1010 PREV_IN_USE + a0 bc 3f 05 97 7f 00 00 40 ed 9f 66 c4 55 00 00 ..?.....@..f.U.. + 0x55c4669fecb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fed40 0x910 PREV_IN_USE + a0 dc 9f 66 c4 55 00 00 a0 bc 3f 05 97 7f 00 00 ...f.U....?..... + 0x55c4669ff650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669ff6e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ + =================================== Tcaches =================================== + [4] Tcache 0x58 (7) => Chunk(0x55c4669fdb50 0x60 PREV_IN_USE) => Chunk(0x55c4669 + fdaf0 0x60 PREV_IN_USE) => Chunk(0x55c4669fda90 0x60 PREV_IN_USE) => Chunk(0x55c + 4669fda30 0x60 PREV_IN_USE) => Chunk(0x55c4669fd970 0x60 PREV_IN_USE) => Chunk(0 + x55c4669fd910 0x60 PREV_IN_USE) => Chunk(0x55c4669fd8b0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 + 69fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x55c4669fed40 0x910 PREV_IN_USE) => Chunk(0x55c46 + 69fdca0 0x1010 PREV_IN_USE) => 0x7f97053fbca0 + ================================================================================ + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +Access to items of the non main arena: + >>> p = process('sh') + >>> hp = p.heap_explorer + >>> hp.arenas_count() # doctest: +SKIP + 2 + >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] # doctest: +SKIP + ==================================== Arena ==================================== + - Malloc State (0x7f97053fbc40) + top = 0x55c4669ff6e0 + last_remainder = 0x0 + next = 0x7f9700000020 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x55c4669fd000) + chunks_count = 0x15 + top: addr = 0x55c4669ff6e0, size = 0x1e920 + - Tcaches + [4] 0x58 (7) + - Fast bins + [4] 0x60 (2) + - Unsorted bins + [0] 0x0 (2) + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + ================================================================================ + ==================================== Arena ==================================== + - Malloc State (0x7f9700000020) + top = 0x7f9700002b30 + last_remainder = 0x0 + next = 0x7f97053fbc40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x7f97000008c0) + chunks_count = 0x4 + top: addr = 0x7f9700002b30, size = 0x1e4d0 + - Tcaches + [-] No chunks found + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + ================================================================================ + >>> _ = [print(ms) for ms in hp.all_arenas_fast_bins()] # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 + 69fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================== Fast Bins ================================== + [-] No chunks found + ================================================================================ + >>> print(hp.fast_bins()) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c4669fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.fast_bins(arena_index=1)) # doctest: +SKIP + ================================== Fast Bins ================================== + [-] No chunks found + ================================================================================ + +""" + +from pwnlib.heap.glmalloc.heap_explorer import HeapExplorer +from pwnlib.heap.glmalloc.arena import Arena +from pwnlib.heap.glmalloc.malloc_chunk import MallocChunk +from pwnlib.heap.glmalloc.malloc_state import MallocState +from pwnlib.heap.glmalloc.heap import Heap +from pwnlib.heap.glmalloc.bins import \ + Tcaches, \ + Tcache, \ + TcacheEntry, \ + NoTcacheError, \ + FastBins, \ + FastBin, \ + FastBinEntry, \ + UnsortedBins, \ + UnsortedBin,\ + UnsortedBinEntry, \ + SmallBins, \ + SmallBin, \ + SmallBinEntry, \ + LargeBins, \ + LargeBin, \ + LargeBinEntry + +__all__ = [ + 'HeapExplorer', + 'Arena', + 'MallocChunk', + 'MallocState', + 'Heap', + 'Tcaches', 'Tcache', 'TcacheEntry', 'NoTcacheError', + 'FastBins', 'FastBin', 'FastBinEntry', + 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', + 'SmallBins', 'SmallBin', 'SmallBinEntry', + 'LargeBins', 'LargeBin', 'LargeBinEntry' +] diff --git a/pwnlib/heap/arena/__init__.py b/pwnlib/heap/glmalloc/arena/__init__.py similarity index 100% rename from pwnlib/heap/arena/__init__.py rename to pwnlib/heap/glmalloc/arena/__init__.py diff --git a/pwnlib/heap/arena/arena.py b/pwnlib/heap/glmalloc/arena/arena.py similarity index 95% rename from pwnlib/heap/arena/arena.py rename to pwnlib/heap/glmalloc/arena/arena.py index 75f086bbe..a61a31fcf 100644 --- a/pwnlib/heap/arena/arena.py +++ b/pwnlib/heap/glmalloc/arena/arena.py @@ -1,8 +1,8 @@ -from pwnlib.heap.bins import NoTcacheError -from pwnlib.heap.malloc_state import \ +from pwnlib.heap.glmalloc.bins import NoTcacheError +from pwnlib.heap.glmalloc.malloc_state import \ SMALL_BINS_START_INDEX, \ LARGE_BINS_START_INDEX -from pwnlib.heap.basic_formatter import BasicFormatter +from pwnlib.heap.glmalloc.basic_formatter import BasicFormatter class Arena(object): diff --git a/pwnlib/heap/arena/parser.py b/pwnlib/heap/glmalloc/arena/parser.py similarity index 97% rename from pwnlib/heap/arena/parser.py rename to pwnlib/heap/glmalloc/arena/parser.py index 946b90e14..9de33b188 100644 --- a/pwnlib/heap/arena/parser.py +++ b/pwnlib/heap/glmalloc/arena/parser.py @@ -1,4 +1,4 @@ -from pwnlib.heap.arena.arena import Arena +from pwnlib.heap.glmalloc.arena.arena import Arena class ArenaParser: diff --git a/pwnlib/heap/basic_formatter.py b/pwnlib/heap/glmalloc/basic_formatter.py similarity index 100% rename from pwnlib/heap/basic_formatter.py rename to pwnlib/heap/glmalloc/basic_formatter.py diff --git a/pwnlib/heap/bins/__init__.py b/pwnlib/heap/glmalloc/bins/__init__.py similarity index 100% rename from pwnlib/heap/bins/__init__.py rename to pwnlib/heap/glmalloc/bins/__init__.py diff --git a/pwnlib/heap/bins/bin.py b/pwnlib/heap/glmalloc/bins/bin.py similarity index 98% rename from pwnlib/heap/bins/bin.py rename to pwnlib/heap/glmalloc/bins/bin.py index b3449195c..5e57e02df 100644 --- a/pwnlib/heap/bins/bin.py +++ b/pwnlib/heap/glmalloc/bins/bin.py @@ -1,4 +1,4 @@ -from pwnlib.heap.basic_formatter import BasicFormatter +from pwnlib.heap.glmalloc.basic_formatter import BasicFormatter class Bins(object): diff --git a/pwnlib/heap/bins/bin_parser.py b/pwnlib/heap/glmalloc/bins/bin_parser.py similarity index 94% rename from pwnlib/heap/bins/bin_parser.py rename to pwnlib/heap/glmalloc/bins/bin_parser.py index 70c270b63..0ea76b635 100644 --- a/pwnlib/heap/bins/bin_parser.py +++ b/pwnlib/heap/glmalloc/bins/bin_parser.py @@ -1,6 +1,6 @@ -from pwnlib.heap.bins.small_bin import SmallBins, SmallBin, SmallBinEntry -from pwnlib.heap.bins.large_bin import LargeBins, LargeBin, LargeBinEntry -from pwnlib.heap.bins.unsorted_bin import \ +from pwnlib.heap.glmalloc.bins import SmallBins, SmallBin, SmallBinEntry +from pwnlib.heap.glmalloc.bins import LargeBins, LargeBin, LargeBinEntry +from pwnlib.heap.glmalloc.bins import \ UnsortedBins, \ UnsortedBin, \ UnsortedBinEntry diff --git a/pwnlib/heap/bins/fast_bin.py b/pwnlib/heap/glmalloc/bins/fast_bin.py similarity index 97% rename from pwnlib/heap/bins/fast_bin.py rename to pwnlib/heap/glmalloc/bins/fast_bin.py index c1fe72340..35f67b1f3 100644 --- a/pwnlib/heap/bins/fast_bin.py +++ b/pwnlib/heap/glmalloc/bins/fast_bin.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.bin import Bins, Bin, BinEntry +from pwnlib.heap.glmalloc.bins import Bins, Bin, BinEntry class FastBinParser: diff --git a/pwnlib/heap/bins/large_bin.py b/pwnlib/heap/glmalloc/bins/large_bin.py similarity index 95% rename from pwnlib/heap/bins/large_bin.py rename to pwnlib/heap/glmalloc/bins/large_bin.py index 161578146..c7438e021 100644 --- a/pwnlib/heap/bins/large_bin.py +++ b/pwnlib/heap/glmalloc/bins/large_bin.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.bin import Bins, Bin, BinEntry +from pwnlib.heap.glmalloc.bins import Bins, Bin, BinEntry class LargeBins(Bins): diff --git a/pwnlib/heap/bins/small_bin.py b/pwnlib/heap/glmalloc/bins/small_bin.py similarity index 95% rename from pwnlib/heap/bins/small_bin.py rename to pwnlib/heap/glmalloc/bins/small_bin.py index fbcae7224..dfa62d7c9 100644 --- a/pwnlib/heap/bins/small_bin.py +++ b/pwnlib/heap/glmalloc/bins/small_bin.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.bin import Bins, Bin, BinEntry +from pwnlib.heap.glmalloc.bins import Bins, Bin, BinEntry class SmallBins(Bins): diff --git a/pwnlib/heap/bins/tcache/__init__.py b/pwnlib/heap/glmalloc/bins/tcache/__init__.py similarity index 100% rename from pwnlib/heap/bins/tcache/__init__.py rename to pwnlib/heap/glmalloc/bins/tcache/__init__.py diff --git a/pwnlib/heap/bins/tcache/error.py b/pwnlib/heap/glmalloc/bins/tcache/error.py similarity index 100% rename from pwnlib/heap/bins/tcache/error.py rename to pwnlib/heap/glmalloc/bins/tcache/error.py diff --git a/pwnlib/heap/bins/tcache/parser.py b/pwnlib/heap/glmalloc/bins/tcache/parser.py similarity index 95% rename from pwnlib/heap/bins/tcache/parser.py rename to pwnlib/heap/glmalloc/bins/tcache/parser.py index 1e91b9ab6..9b0301659 100644 --- a/pwnlib/heap/bins/tcache/parser.py +++ b/pwnlib/heap/glmalloc/bins/tcache/parser.py @@ -1,6 +1,6 @@ -from pwnlib.heap.bins.tcache.tcache_per_thread_struct import \ +from pwnlib.heap.glmalloc.bins.tcache.tcache_per_thread_struct import \ TcachePerthreadStructParser -from pwnlib.heap.bins.tcache.tcache import Tcaches, Tcache +from pwnlib.heap.glmalloc.bins import Tcaches, Tcache class TcacheParser: diff --git a/pwnlib/heap/bins/tcache/tcache.py b/pwnlib/heap/glmalloc/bins/tcache/tcache.py similarity index 93% rename from pwnlib/heap/bins/tcache/tcache.py rename to pwnlib/heap/glmalloc/bins/tcache/tcache.py index 51a2a2abe..62d581ded 100644 --- a/pwnlib/heap/bins/tcache/tcache.py +++ b/pwnlib/heap/glmalloc/bins/tcache/tcache.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.bin import Bins, Bin, BinEntry +from pwnlib.heap.glmalloc.bins import Bins, Bin, BinEntry class Tcaches(Bins): diff --git a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/glmalloc/bins/tcache/tcache_per_thread_struct.py similarity index 98% rename from pwnlib/heap/bins/tcache/tcache_per_thread_struct.py rename to pwnlib/heap/glmalloc/bins/tcache/tcache_per_thread_struct.py index 31e7dae6c..ef0b92143 100644 --- a/pwnlib/heap/bins/tcache/tcache_per_thread_struct.py +++ b/pwnlib/heap/glmalloc/bins/tcache/tcache_per_thread_struct.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.tcache.tcache import TcacheEntry +from pwnlib.heap.glmalloc.bins import TcacheEntry class TcachePerthreadStructParser: diff --git a/pwnlib/heap/bins/unsorted_bin.py b/pwnlib/heap/glmalloc/bins/unsorted_bin.py similarity index 95% rename from pwnlib/heap/bins/unsorted_bin.py rename to pwnlib/heap/glmalloc/bins/unsorted_bin.py index dde541ddd..48661436c 100644 --- a/pwnlib/heap/bins/unsorted_bin.py +++ b/pwnlib/heap/glmalloc/bins/unsorted_bin.py @@ -1,4 +1,4 @@ -from pwnlib.heap.bins.bin import Bins, Bin, BinEntry +from pwnlib.heap.glmalloc.bins import Bins, Bin, BinEntry class UnsortedBins(Bins): diff --git a/pwnlib/heap/heap/__init__.py b/pwnlib/heap/glmalloc/heap/__init__.py similarity index 100% rename from pwnlib/heap/heap/__init__.py rename to pwnlib/heap/glmalloc/heap/__init__.py diff --git a/pwnlib/heap/heap/heap.py b/pwnlib/heap/glmalloc/heap/heap.py similarity index 95% rename from pwnlib/heap/heap/heap.py rename to pwnlib/heap/glmalloc/heap/heap.py index 55be0631d..19c9942b5 100644 --- a/pwnlib/heap/heap/heap.py +++ b/pwnlib/heap/glmalloc/heap/heap.py @@ -1,4 +1,4 @@ -from pwnlib.heap.basic_formatter import BasicFormatter +from pwnlib.heap.glmalloc.basic_formatter import BasicFormatter class Heap: diff --git a/pwnlib/heap/heap/heap_info.py b/pwnlib/heap/glmalloc/heap/heap_info.py similarity index 100% rename from pwnlib/heap/heap/heap_info.py rename to pwnlib/heap/glmalloc/heap/heap_info.py diff --git a/pwnlib/heap/heap/heap_parser.py b/pwnlib/heap/glmalloc/heap/heap_parser.py similarity index 95% rename from pwnlib/heap/heap/heap_parser.py rename to pwnlib/heap/glmalloc/heap/heap_parser.py index 139edc711..246c2a151 100644 --- a/pwnlib/heap/heap/heap_parser.py +++ b/pwnlib/heap/glmalloc/heap/heap_parser.py @@ -1,6 +1,6 @@ -from pwnlib.heap.utils import align_address -from pwnlib.heap.heap.heap import Heap -from pwnlib.heap.heap.heap_info import HeapInfoParser +from pwnlib.heap.glmalloc.utils import align_address +from pwnlib.heap.glmalloc.heap.heap import Heap +from pwnlib.heap.glmalloc.heap.heap_info import HeapInfoParser class HeapParser: diff --git a/pwnlib/heap/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py similarity index 98% rename from pwnlib/heap/heap_explorer.py rename to pwnlib/heap/glmalloc/heap_explorer.py index c910d0534..2e424e886 100644 --- a/pwnlib/heap/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -1,14 +1,14 @@ -from pwnlib.heap.bins import \ +from pwnlib.heap.glmalloc.bins import \ BinParser, \ FastBinParser, \ EnabledTcacheParser, \ DisabledTcacheParser, \ NoTcacheError -from pwnlib.heap.arena import ArenaParser -from pwnlib.heap.malloc_state import MallocStateParser -from pwnlib.heap.heap import HeapParser -from pwnlib.heap.malloc_chunk import MallocChunkParser -from pwnlib.heap.process_informer import ProcessInformer +from pwnlib.heap.glmalloc.arena import ArenaParser +from pwnlib.heap.glmalloc.malloc_state import MallocStateParser +from pwnlib.heap.glmalloc.heap import HeapParser +from pwnlib.heap.glmalloc.malloc_chunk import MallocChunkParser +from pwnlib.heap.glmalloc.process_informer import ProcessInformer class HeapExplorer: diff --git a/pwnlib/heap/malloc_chunk.py b/pwnlib/heap/glmalloc/malloc_chunk.py similarity index 99% rename from pwnlib/heap/malloc_chunk.py rename to pwnlib/heap/glmalloc/malloc_chunk.py index 9db266f15..2065f8d93 100644 --- a/pwnlib/heap/malloc_chunk.py +++ b/pwnlib/heap/glmalloc/malloc_chunk.py @@ -1,4 +1,4 @@ -from pwnlib.heap.utils import p32, p64 +from pwnlib.heap.glmalloc.utils import p32, p64 class MallocChunkParser: diff --git a/pwnlib/heap/malloc_state/__init__.py b/pwnlib/heap/glmalloc/malloc_state/__init__.py similarity index 100% rename from pwnlib/heap/malloc_state/__init__.py rename to pwnlib/heap/glmalloc/malloc_state/__init__.py diff --git a/pwnlib/heap/malloc_state/bins/__init__.py b/pwnlib/heap/glmalloc/malloc_state/bins/__init__.py similarity index 100% rename from pwnlib/heap/malloc_state/bins/__init__.py rename to pwnlib/heap/glmalloc/malloc_state/bins/__init__.py diff --git a/pwnlib/heap/malloc_state/bins/bins.py b/pwnlib/heap/glmalloc/malloc_state/bins/bins.py similarity index 95% rename from pwnlib/heap/malloc_state/bins/bins.py rename to pwnlib/heap/glmalloc/malloc_state/bins/bins.py index 3a4434a75..46f7173c6 100644 --- a/pwnlib/heap/malloc_state/bins/bins.py +++ b/pwnlib/heap/glmalloc/malloc_state/bins/bins.py @@ -1,4 +1,4 @@ -from pwnlib.heap.malloc_state.bins.bins_indexes import \ +from pwnlib.heap.glmalloc.malloc_state.bins import \ LARGE_BINS_START_INDEX, SMALL_BINS_START_INDEX, UNSORTED_BIN_INDEX diff --git a/pwnlib/heap/malloc_state/bins/bins_indexes.py b/pwnlib/heap/glmalloc/malloc_state/bins/bins_indexes.py similarity index 100% rename from pwnlib/heap/malloc_state/bins/bins_indexes.py rename to pwnlib/heap/glmalloc/malloc_state/bins/bins_indexes.py diff --git a/pwnlib/heap/malloc_state/bins/parser.py b/pwnlib/heap/glmalloc/malloc_state/bins/parser.py similarity index 96% rename from pwnlib/heap/malloc_state/bins/parser.py rename to pwnlib/heap/glmalloc/malloc_state/bins/parser.py index d6165ffcd..7ed12fe88 100644 --- a/pwnlib/heap/malloc_state/bins/parser.py +++ b/pwnlib/heap/glmalloc/malloc_state/bins/parser.py @@ -1,5 +1,5 @@ -from pwnlib.heap.bins import SmallBinEntry, LargeBinEntry, UnsortedBinEntry -from pwnlib.heap.malloc_state.bins.bins_indexes import \ +from pwnlib.heap.glmalloc.bins import SmallBinEntry, LargeBinEntry, UnsortedBinEntry +from pwnlib.heap.glmalloc.malloc_state.bins import \ LARGE_BINS_START_INDEX, SMALL_BINS_START_INDEX from .bins import Bins diff --git a/pwnlib/heap/malloc_state/fastbinsy.py b/pwnlib/heap/glmalloc/malloc_state/fastbinsy.py similarity index 93% rename from pwnlib/heap/malloc_state/fastbinsy.py rename to pwnlib/heap/glmalloc/malloc_state/fastbinsy.py index 5cfa34fa3..0100b2467 100644 --- a/pwnlib/heap/malloc_state/fastbinsy.py +++ b/pwnlib/heap/glmalloc/malloc_state/fastbinsy.py @@ -1,5 +1,5 @@ -from pwnlib.heap.utils import u64, u32 -from pwnlib.heap.bins.fast_bin import FastBinEntry +from pwnlib.heap.glmalloc.utils import u64, u32 +from pwnlib.heap.glmalloc.bins import FastBinEntry class FastBinsYParser: diff --git a/pwnlib/heap/malloc_state/malloc_state/__init__.py b/pwnlib/heap/glmalloc/malloc_state/malloc_state/__init__.py similarity index 100% rename from pwnlib/heap/malloc_state/malloc_state/__init__.py rename to pwnlib/heap/glmalloc/malloc_state/malloc_state/__init__.py diff --git a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py b/pwnlib/heap/glmalloc/malloc_state/malloc_state/malloc_state.py similarity index 98% rename from pwnlib/heap/malloc_state/malloc_state/malloc_state.py rename to pwnlib/heap/glmalloc/malloc_state/malloc_state/malloc_state.py index 800aff887..01afa67f4 100644 --- a/pwnlib/heap/malloc_state/malloc_state/malloc_state.py +++ b/pwnlib/heap/glmalloc/malloc_state/malloc_state/malloc_state.py @@ -1,4 +1,4 @@ -from pwnlib.heap.basic_formatter import BasicFormatter +from pwnlib.heap.glmalloc.basic_formatter import BasicFormatter class MallocState: diff --git a/pwnlib/heap/malloc_state/malloc_state/parser.py b/pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py similarity index 98% rename from pwnlib/heap/malloc_state/malloc_state/parser.py rename to pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py index 16e3aa13a..efcef84ac 100644 --- a/pwnlib/heap/malloc_state/malloc_state/parser.py +++ b/pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py @@ -1,5 +1,5 @@ -from pwnlib.heap.malloc_state.bins import BinsParser -from pwnlib.heap.malloc_state.fastbinsy import FastBinsYParser +from pwnlib.heap.glmalloc.malloc_state.bins import BinsParser +from pwnlib.heap.glmalloc.malloc_state import FastBinsYParser from construct import Int32ul, Int64ul, Struct, Padding from .malloc_state import MallocState diff --git a/pwnlib/heap/process_informer.py b/pwnlib/heap/glmalloc/process_informer.py similarity index 97% rename from pwnlib/heap/process_informer.py rename to pwnlib/heap/glmalloc/process_informer.py index cde6947f5..a53c48079 100644 --- a/pwnlib/heap/process_informer.py +++ b/pwnlib/heap/glmalloc/process_informer.py @@ -1,6 +1,6 @@ import os.path import pwnlib.util.proc -from pwnlib.heap.utils import \ +from pwnlib.heap.glmalloc.utils import \ u64, \ u32, \ get_libc_version_from_name, \ diff --git a/pwnlib/heap/utils.py b/pwnlib/heap/glmalloc/utils.py similarity index 100% rename from pwnlib/heap/utils.py rename to pwnlib/heap/glmalloc/utils.py From 3cdf2e09841e9b40f111dbb132e931dd23faa2a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 17:53:42 +0100 Subject: [PATCH 132/179] fix imports in glmalloc files --- pwnlib/heap/glmalloc/__init__.py | 6 +++++- pwnlib/heap/glmalloc/bins/__init__.py | 4 +++- pwnlib/heap/glmalloc/bins/tcache/parser.py | 5 ++--- .../heap/glmalloc/bins/tcache/tcache_per_thread_struct.py | 2 +- pwnlib/heap/glmalloc/malloc_state/bins/bins.py | 2 +- pwnlib/heap/glmalloc/malloc_state/bins/parser.py | 2 +- pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py | 4 ++-- 7 files changed, 15 insertions(+), 10 deletions(-) diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py index 7a30c20c8..ddae8bb6f 100644 --- a/pwnlib/heap/glmalloc/__init__.py +++ b/pwnlib/heap/glmalloc/__init__.py @@ -325,6 +325,9 @@ from pwnlib.heap.glmalloc.malloc_state import MallocState from pwnlib.heap.glmalloc.heap import Heap from pwnlib.heap.glmalloc.bins import \ + Bins, \ + Bin, \ + BinEntry, \ Tcaches, \ Tcache, \ TcacheEntry, \ @@ -352,5 +355,6 @@ 'FastBins', 'FastBin', 'FastBinEntry', 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', 'SmallBins', 'SmallBin', 'SmallBinEntry', - 'LargeBins', 'LargeBin', 'LargeBinEntry' + 'LargeBins', 'LargeBin', 'LargeBinEntry', + 'Bins', 'Bin', 'BinEntry', ] diff --git a/pwnlib/heap/glmalloc/bins/__init__.py b/pwnlib/heap/glmalloc/bins/__init__.py index ee16ea46a..6fbe9a9c3 100644 --- a/pwnlib/heap/glmalloc/bins/__init__.py +++ b/pwnlib/heap/glmalloc/bins/__init__.py @@ -1,4 +1,5 @@ +from .bin import Bins, Bin, BinEntry from .small_bin import SmallBins, SmallBin, SmallBinEntry from .large_bin import LargeBins, LargeBin, LargeBinEntry from .unsorted_bin import UnsortedBins, UnsortedBin, UnsortedBinEntry @@ -19,5 +20,6 @@ 'FastBinParser', 'FastBins', 'FastBin', 'FastBinEntry', 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', 'SmallBins', 'SmallBin', 'SmallBinEntry', - 'LargeBins', 'LargeBin', 'LargeBinEntry' + 'LargeBins', 'LargeBin', 'LargeBinEntry', + 'Bins', 'Bin', 'BinEntry' ] diff --git a/pwnlib/heap/glmalloc/bins/tcache/parser.py b/pwnlib/heap/glmalloc/bins/tcache/parser.py index 9b0301659..21cf821b1 100644 --- a/pwnlib/heap/glmalloc/bins/tcache/parser.py +++ b/pwnlib/heap/glmalloc/bins/tcache/parser.py @@ -1,6 +1,5 @@ -from pwnlib.heap.glmalloc.bins.tcache.tcache_per_thread_struct import \ - TcachePerthreadStructParser -from pwnlib.heap.glmalloc.bins import Tcaches, Tcache +from .tcache_per_thread_struct import TcachePerthreadStructParser +from .tcache import Tcaches, Tcache class TcacheParser: diff --git a/pwnlib/heap/glmalloc/bins/tcache/tcache_per_thread_struct.py b/pwnlib/heap/glmalloc/bins/tcache/tcache_per_thread_struct.py index ef0b92143..809a95a16 100644 --- a/pwnlib/heap/glmalloc/bins/tcache/tcache_per_thread_struct.py +++ b/pwnlib/heap/glmalloc/bins/tcache/tcache_per_thread_struct.py @@ -1,4 +1,4 @@ -from pwnlib.heap.glmalloc.bins import TcacheEntry +from .tcache import TcacheEntry class TcachePerthreadStructParser: diff --git a/pwnlib/heap/glmalloc/malloc_state/bins/bins.py b/pwnlib/heap/glmalloc/malloc_state/bins/bins.py index 46f7173c6..e82924b4e 100644 --- a/pwnlib/heap/glmalloc/malloc_state/bins/bins.py +++ b/pwnlib/heap/glmalloc/malloc_state/bins/bins.py @@ -1,4 +1,4 @@ -from pwnlib.heap.glmalloc.malloc_state.bins import \ +from .bins_indexes import \ LARGE_BINS_START_INDEX, SMALL_BINS_START_INDEX, UNSORTED_BIN_INDEX diff --git a/pwnlib/heap/glmalloc/malloc_state/bins/parser.py b/pwnlib/heap/glmalloc/malloc_state/bins/parser.py index 7ed12fe88..a1b098f69 100644 --- a/pwnlib/heap/glmalloc/malloc_state/bins/parser.py +++ b/pwnlib/heap/glmalloc/malloc_state/bins/parser.py @@ -1,5 +1,5 @@ from pwnlib.heap.glmalloc.bins import SmallBinEntry, LargeBinEntry, UnsortedBinEntry -from pwnlib.heap.glmalloc.malloc_state.bins import \ +from .bins_indexes import \ LARGE_BINS_START_INDEX, SMALL_BINS_START_INDEX from .bins import Bins diff --git a/pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py b/pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py index efcef84ac..33883fcc4 100644 --- a/pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py +++ b/pwnlib/heap/glmalloc/malloc_state/malloc_state/parser.py @@ -1,6 +1,6 @@ -from pwnlib.heap.glmalloc.malloc_state.bins import BinsParser -from pwnlib.heap.glmalloc.malloc_state import FastBinsYParser from construct import Int32ul, Int64ul, Struct, Padding +from pwnlib.heap.glmalloc.malloc_state.bins import BinsParser +from ..fastbinsy import FastBinsYParser from .malloc_state import MallocState NFASTBINS = 10 From 57b9d69c5508a749a144e1122d04cb889c40a71b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 18:31:35 +0100 Subject: [PATCH 133/179] add glmalloc to docs --- docs/source/heap.rst | 14 ++++------- docs/source/heap/glmalloc.rst | 24 +++++++++++++++++++ docs/source/heap/{ => glmalloc}/arena.rst | 6 ++--- docs/source/heap/{ => glmalloc}/bins.rst | 0 docs/source/heap/{ => glmalloc}/heap.rst | 0 .../heap/{ => glmalloc}/malloc_chunk.rst | 0 .../heap/{ => glmalloc}/malloc_state.rst | 0 7 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 docs/source/heap/glmalloc.rst rename docs/source/heap/{ => glmalloc}/arena.rst (56%) rename docs/source/heap/{ => glmalloc}/bins.rst (100%) rename docs/source/heap/{ => glmalloc}/heap.rst (100%) rename docs/source/heap/{ => glmalloc}/malloc_chunk.rst (100%) rename docs/source/heap/{ => glmalloc}/malloc_state.rst (100%) diff --git a/docs/source/heap.rst b/docs/source/heap.rst index 820fe30ed..956e62041 100644 --- a/docs/source/heap.rst +++ b/docs/source/heap.rst @@ -4,21 +4,15 @@ from pwnlib.tubes.process import process -:mod:`pwnlib.heap` --- Heap explorer +:mod:`pwnlib.heap` --- Heap =================================================== .. automodule:: pwnlib.heap - :members: -Heap Items +Allocators ------------- .. toctree:: - :maxdepth: 3 + :maxdepth: 1 :glob: - heap/* - -Heap Explorer ---------------- -.. autoclass:: pwnlib.heap.HeapExplorer() - :members: + heap/glmalloc diff --git a/docs/source/heap/glmalloc.rst b/docs/source/heap/glmalloc.rst new file mode 100644 index 000000000..b2f2e0152 --- /dev/null +++ b/docs/source/heap/glmalloc.rst @@ -0,0 +1,24 @@ +.. testsetup:: * + + from pwnlib.heap.glmalloc import * + from pwnlib.tubes.process import process + + +:mod:`pwnlib.heap.glmalloc` --- glibc malloc +=================================================== + +.. automodule:: pwnlib.heap.glmalloc + :members: + +Heap Items +------------- +.. toctree:: + :maxdepth: 3 + :glob: + + gmalloc/* + +Heap Explorer +--------------- +.. autoclass:: pwnlib.heap.glmalloc.HeapExplorer() + :members: diff --git a/docs/source/heap/arena.rst b/docs/source/heap/glmalloc/arena.rst similarity index 56% rename from docs/source/heap/arena.rst rename to docs/source/heap/glmalloc/arena.rst index 6694ccbb8..5ca630fca 100644 --- a/docs/source/heap/arena.rst +++ b/docs/source/heap/glmalloc/arena.rst @@ -1,13 +1,13 @@ .. testsetup:: * - from pwnlib.heap.arena import * + from pwnlib.heap.glmalloc.arena import * :mod:`pwnlib.heap.arena` --- Arena of libc ======================================================================== -.. autoclass:: pwnlib.heap.arena.Arena() +.. autoclass:: pwnlib.heap.glmalloc.Arena() :members: -.. autoclass:: pwnlib.heap.bins.tcache.NoTcacheError() +.. autoclass:: pwnlib.heap.glmalloc.NoTcacheError() :members: :show-inheritance: diff --git a/docs/source/heap/bins.rst b/docs/source/heap/glmalloc/bins.rst similarity index 100% rename from docs/source/heap/bins.rst rename to docs/source/heap/glmalloc/bins.rst diff --git a/docs/source/heap/heap.rst b/docs/source/heap/glmalloc/heap.rst similarity index 100% rename from docs/source/heap/heap.rst rename to docs/source/heap/glmalloc/heap.rst diff --git a/docs/source/heap/malloc_chunk.rst b/docs/source/heap/glmalloc/malloc_chunk.rst similarity index 100% rename from docs/source/heap/malloc_chunk.rst rename to docs/source/heap/glmalloc/malloc_chunk.rst diff --git a/docs/source/heap/malloc_state.rst b/docs/source/heap/glmalloc/malloc_state.rst similarity index 100% rename from docs/source/heap/malloc_state.rst rename to docs/source/heap/glmalloc/malloc_state.rst From e71874346886c95ed0be87a1cee89bb1419e7c4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 13 Mar 2021 20:56:08 +0100 Subject: [PATCH 134/179] reorganize heap documentation --- docs/source/heap/glmalloc.rst | 19 ++- docs/source/heap/glmalloc/arena.rst | 6 +- docs/source/heap/glmalloc/bins.rst | 108 ++---------------- docs/source/heap/glmalloc/bins/bins.rst | 20 ++++ docs/source/heap/glmalloc/bins/fastbins.rst | 21 ++++ docs/source/heap/glmalloc/bins/largebins.rst | 21 ++++ docs/source/heap/glmalloc/bins/smallbins.rst | 21 ++++ docs/source/heap/glmalloc/bins/tcaches.rst | 23 ++++ .../source/heap/glmalloc/bins/unsortedbin.rst | 22 ++++ docs/source/heap/glmalloc/heap.rst | 8 +- docs/source/heap/glmalloc/heap_explorer.rst | 12 ++ docs/source/heap/glmalloc/malloc_chunk.rst | 10 +- docs/source/heap/glmalloc/malloc_state.rst | 20 +++- pwnlib/heap/__init__.py | 4 + 14 files changed, 194 insertions(+), 121 deletions(-) create mode 100644 docs/source/heap/glmalloc/bins/bins.rst create mode 100644 docs/source/heap/glmalloc/bins/fastbins.rst create mode 100644 docs/source/heap/glmalloc/bins/largebins.rst create mode 100644 docs/source/heap/glmalloc/bins/smallbins.rst create mode 100644 docs/source/heap/glmalloc/bins/tcaches.rst create mode 100644 docs/source/heap/glmalloc/bins/unsortedbin.rst create mode 100644 docs/source/heap/glmalloc/heap_explorer.rst diff --git a/docs/source/heap/glmalloc.rst b/docs/source/heap/glmalloc.rst index b2f2e0152..a132d7f2c 100644 --- a/docs/source/heap/glmalloc.rst +++ b/docs/source/heap/glmalloc.rst @@ -7,18 +7,17 @@ :mod:`pwnlib.heap.glmalloc` --- glibc malloc =================================================== -.. automodule:: pwnlib.heap.glmalloc - :members: - -Heap Items +Items ------------- .. toctree:: - :maxdepth: 3 + :maxdepth: 1 :glob: - gmalloc/* + glmalloc/* + + +Examples +------------ +.. automodule:: pwnlib.heap.glmalloc + -Heap Explorer ---------------- -.. autoclass:: pwnlib.heap.glmalloc.HeapExplorer() - :members: diff --git a/docs/source/heap/glmalloc/arena.rst b/docs/source/heap/glmalloc/arena.rst index 5ca630fca..9ca8e344d 100644 --- a/docs/source/heap/glmalloc/arena.rst +++ b/docs/source/heap/glmalloc/arena.rst @@ -2,12 +2,16 @@ from pwnlib.heap.glmalloc.arena import * -:mod:`pwnlib.heap.arena` --- Arena of libc +:mod:`pwnlib.heap.glmalloc.arena` --- Arena of libc ======================================================================== +Arena +------- .. autoclass:: pwnlib.heap.glmalloc.Arena() :members: +NoTcacheError +-------------- .. autoclass:: pwnlib.heap.glmalloc.NoTcacheError() :members: :show-inheritance: diff --git a/docs/source/heap/glmalloc/bins.rst b/docs/source/heap/glmalloc/bins.rst index 1e854d2a3..3f7f16ec3 100644 --- a/docs/source/heap/glmalloc/bins.rst +++ b/docs/source/heap/glmalloc/bins.rst @@ -1,104 +1,18 @@ .. testsetup:: * - from pwnlib.heap.bins import * + from pwnlib.heap.glmalloc.bins import * -:mod:`pwnlib.heap.bins` --- Bins of the libc -============================================= +:mod:`pwnlib.heap.glmalloc.bins` --- Bins of the libc +========================================================= -Bins (abstract classes) ------------------------- -Classes with generic behaviour that are inherit by the all -the bins types. +This modules contains the classes used to represent the different +bins of the libc. -.. autoclass:: pwnlib.heap.bins.bin.Bins() - :members: +Bins +----- +.. toctree:: + :maxdepth: 2 + :glob: -.. autoclass:: pwnlib.heap.bins.bin.Bin() - :members: + bins/* -.. autoclass:: pwnlib.heap.bins.bin.BinEntry() - :members: - -Tcaches --------- -Classes to represent the tcache bins of the libc. Tcaches were -incorporated in libc 2.26, therefore this classes are only -used if the current libc version of the process is at least 2.26. - -.. autoclass:: pwnlib.heap.bins.Tcaches() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.Tcache() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.TcacheEntry() - :members: - :show-inheritance: - - -Fast bins ----------- -Classes to represent the tcache bins of the libc. - -.. autoclass:: pwnlib.heap.bins.FastBins() - :members: - :show-inheritance: - - -.. autoclass:: pwnlib.heap.bins.FastBin() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.FastBinEntry() - :members: - :show-inheritance: - -Unsorted bin --------------- -Classes to represent the unsorted bin of the libc. - -.. autoclass:: pwnlib.heap.bins.UnsortedBins() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.UnsortedBin() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.UnsortedBinEntry() - :members: - :show-inheritance: - -Small bins ------------- -Classes to represent the small bins of the libc. - -.. autoclass:: pwnlib.heap.bins.SmallBins() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.SmallBin() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.SmallBinEntry() - :members: - :show-inheritance: - -Large bins ------------- -Classes to represent the large bins of the libc. - -.. autoclass:: pwnlib.heap.bins.LargeBins() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.LargeBin() - :members: - :show-inheritance: - -.. autoclass:: pwnlib.heap.bins.LargeBinEntry() - :members: - :show-inheritance: diff --git a/docs/source/heap/glmalloc/bins/bins.rst b/docs/source/heap/glmalloc/bins/bins.rst new file mode 100644 index 000000000..e8ac0fb7f --- /dev/null +++ b/docs/source/heap/glmalloc/bins/bins.rst @@ -0,0 +1,20 @@ +Bins (abstract classes) +========================== +Classes with generic behaviour that are inherit by the all +the bins types. + + +Bins +----- +.. autoclass:: pwnlib.heap.glmalloc.Bins() + :members: + +Bin +---- +.. autoclass:: pwnlib.heap.glmalloc.Bin() + :members: + +BinEntry +--------- +.. autoclass:: pwnlib.heap.glmalloc.BinEntry() + :members: diff --git a/docs/source/heap/glmalloc/bins/fastbins.rst b/docs/source/heap/glmalloc/bins/fastbins.rst new file mode 100644 index 000000000..c72e76445 --- /dev/null +++ b/docs/source/heap/glmalloc/bins/fastbins.rst @@ -0,0 +1,21 @@ +Fast bins +========== +Classes to represent the tcache bins of the libc. + +FastBins +--------- +.. autoclass:: pwnlib.heap.glmalloc.FastBins() + :members: + :show-inheritance: + +FastBin +-------- +.. autoclass:: pwnlib.heap.glmalloc.FastBin() + :members: + :show-inheritance: + +FastBinEntry +------------- +.. autoclass:: pwnlib.heap.glmalloc.FastBinEntry() + :members: + :show-inheritance: diff --git a/docs/source/heap/glmalloc/bins/largebins.rst b/docs/source/heap/glmalloc/bins/largebins.rst new file mode 100644 index 000000000..64a8a6d66 --- /dev/null +++ b/docs/source/heap/glmalloc/bins/largebins.rst @@ -0,0 +1,21 @@ +Large bins +=========== +Classes to represent the large bins of the libc. + +LargeBins +----------- +.. autoclass:: pwnlib.heap.glmalloc.LargeBins() + :members: + :show-inheritance: + +LargeBin +---------- +.. autoclass:: pwnlib.heap.glmalloc.LargeBin() + :members: + :show-inheritance: + +LargeBinEntry +--------------- +.. autoclass:: pwnlib.heap.glmalloc.LargeBinEntry() + :members: + :show-inheritance: \ No newline at end of file diff --git a/docs/source/heap/glmalloc/bins/smallbins.rst b/docs/source/heap/glmalloc/bins/smallbins.rst new file mode 100644 index 000000000..e4e02ea23 --- /dev/null +++ b/docs/source/heap/glmalloc/bins/smallbins.rst @@ -0,0 +1,21 @@ +Small bins +=========== +Classes to represent the small bins of the libc. + +SmallBins +----------- +.. autoclass:: pwnlib.heap.glmalloc.SmallBins() + :members: + :show-inheritance: + +SmallBin +---------- +.. autoclass:: pwnlib.heap.glmalloc.SmallBin() + :members: + :show-inheritance: + +SmallBinEntry +-------------- +.. autoclass:: pwnlib.heap.glmalloc.SmallBinEntry() + :members: + :show-inheritance: diff --git a/docs/source/heap/glmalloc/bins/tcaches.rst b/docs/source/heap/glmalloc/bins/tcaches.rst new file mode 100644 index 000000000..f37a27e09 --- /dev/null +++ b/docs/source/heap/glmalloc/bins/tcaches.rst @@ -0,0 +1,23 @@ +Tcaches +======== +Classes to represent the tcache bins of the libc. Tcaches were +incorporated in libc 2.26, therefore this classes are only +used if the current libc version of the process is at least 2.26. + +Tcaches +-------- +.. autoclass:: pwnlib.heap.glmalloc.Tcaches() + :members: + :show-inheritance: + +Tcache +------- +.. autoclass:: pwnlib.heap.glmalloc.Tcache() + :members: + :show-inheritance: + +TcacheEntry +------------ +.. autoclass:: pwnlib.heap.glmalloc.TcacheEntry() + :members: + :show-inheritance: \ No newline at end of file diff --git a/docs/source/heap/glmalloc/bins/unsortedbin.rst b/docs/source/heap/glmalloc/bins/unsortedbin.rst new file mode 100644 index 000000000..e204be912 --- /dev/null +++ b/docs/source/heap/glmalloc/bins/unsortedbin.rst @@ -0,0 +1,22 @@ +Unsorted bin +============== +Classes to represent the unsorted bin of the libc. + +UnsortedBins +-------------- +.. autoclass:: pwnlib.heap.glmalloc.UnsortedBins() + :members: + :show-inheritance: + +UnsortedBin +------------- +.. autoclass:: pwnlib.heap.glmalloc.UnsortedBin() + :members: + :show-inheritance: + +UnsortedBinEntry +------------------ +.. autoclass:: pwnlib.heap.glmalloc.UnsortedBinEntry() + :members: + :show-inheritance: + diff --git a/docs/source/heap/glmalloc/heap.rst b/docs/source/heap/glmalloc/heap.rst index e6983baa4..f5dba1c85 100644 --- a/docs/source/heap/glmalloc/heap.rst +++ b/docs/source/heap/glmalloc/heap.rst @@ -1,9 +1,11 @@ .. testsetup:: * - from pwnlib.heap.heap import * + from pwnlib.heap.glmalloc.heap import * -:mod:`pwnlib.heap.heap` --- Heap managed by the libc +:mod:`pwnlib.heap.glmalloc.heap` --- Heap managed by the libc ======================================================================== -.. autoclass:: pwnlib.heap.heap.Heap() +Heap +------ +.. autoclass:: pwnlib.heap.glmalloc.Heap() :members: diff --git a/docs/source/heap/glmalloc/heap_explorer.rst b/docs/source/heap/glmalloc/heap_explorer.rst new file mode 100644 index 000000000..ad5a3812d --- /dev/null +++ b/docs/source/heap/glmalloc/heap_explorer.rst @@ -0,0 +1,12 @@ +.. testsetup:: * + + from pwnlib.heap.glmalloc import * + from pwnlib.tubes.process import process + +Heap Explorer +=============== + +HeapExplorer +-------------- +.. autoclass:: pwnlib.heap.glmalloc.HeapExplorer() + :members: \ No newline at end of file diff --git a/docs/source/heap/glmalloc/malloc_chunk.rst b/docs/source/heap/glmalloc/malloc_chunk.rst index 05a533c11..69478e3eb 100644 --- a/docs/source/heap/glmalloc/malloc_chunk.rst +++ b/docs/source/heap/glmalloc/malloc_chunk.rst @@ -1,9 +1,11 @@ .. testsetup:: * - from pwnlib.heap.malloc_chunk import * + from pwnlib.heap.glmalloc.malloc_chunk import * -:mod:`pwnlib.heap.malloc_chunk` --- Chunks with metadata managed by libc -======================================================================== +:mod:`pwnlib.heap.glmalloc.malloc_chunk` --- Chunks with metadata managed by libc +=================================================================================== -.. autoclass:: pwnlib.heap.malloc_chunk.MallocChunk() +MallocChunk +--------------- +.. autoclass:: pwnlib.heap.glmalloc.MallocChunk() :members: diff --git a/docs/source/heap/glmalloc/malloc_state.rst b/docs/source/heap/glmalloc/malloc_state.rst index 6bbc34d5a..9ab2556d6 100644 --- a/docs/source/heap/glmalloc/malloc_state.rst +++ b/docs/source/heap/glmalloc/malloc_state.rst @@ -1,16 +1,24 @@ .. testsetup:: * - from pwnlib.heap.malloc_state import * + from pwnlib.heap.glmalloc.malloc_state import * -:mod:`pwnlib.heap.malloc_state` --- Malloc state of each arena of the libc -========================================================================== +:mod:`pwnlib.heap.glmalloc.malloc_state` --- Malloc state of each arena of the libc +===================================================================================== -.. autoclass:: pwnlib.heap.malloc_state.MallocState() + +MallocState +------------ +.. autoclass:: pwnlib.heap.glmalloc.MallocState() :members: -.. autoclass:: pwnlib.heap.malloc_state.FastBinsY() + +FastBinsY +----------- +.. autoclass:: pwnlib.heap.glmalloc.malloc_state.FastBinsY() :members: -.. autoclass:: pwnlib.heap.malloc_state.Bins() +Bins +------ +.. autoclass:: pwnlib.heap.glmalloc.malloc_state.Bins() :members: diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 72939ccd7..52f484195 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -1,5 +1,9 @@ # -*- coding: utf-8 -*- +""" +This is the module for exploring the heap. + +""" from pwnlib.heap.glmalloc.heap_explorer import HeapExplorer from pwnlib.heap.glmalloc.arena import Arena from pwnlib.heap.glmalloc.malloc_chunk import MallocChunk From 4a5a821688cd3c482706587f781cc176bafddf84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 10:32:14 +0100 Subject: [PATCH 135/179] add timeout to process heap_explorer --- pwnlib/tubes/process.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 76cb75865..262dbc8b8 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -27,6 +27,7 @@ from pwnlib.util.misc import parse_ldd_output from pwnlib.util.misc import which import pwnlib.util.proc +from pwnlib.exception import PwnlibException from pwnlib.heap import HeapExplorer @@ -954,11 +955,16 @@ def _libc(self): ) ) - @property - def heap_explorer(self): + def heap_explorer(self, timeout=1): """Returns a heap explorer that allows to inspect the items of the libc heap. + Arguments: + timeout(int): Time to wait for libc to being loaded + + Raises: + PwnlibException: In case the libc is not found in the given timeout + Examples: >>> p = process('sh') # doctest: +SKIP >>> hp = p.heap_explorer # doctest: +SKIP @@ -976,7 +982,21 @@ def heap_explorer(self): Returns: HeapExplorer """ - return HeapExplorer(self.pid, self._libc()) + + # wait until libc is loaded in the process or timeout is reached + limit = time.time() + timeout + while True: + try: + libc = self._libc() + break + except PwnlibException as ex: + if str(ex).startswith("Unable to find the libc"): + if time.time() < limit: + time.sleep(0.01) + continue + raise + + return HeapExplorer(self.pid, libc) @property def elf(self): From 3313ac26d7da06050f75903e100a00bcc5839ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 10:49:36 +0100 Subject: [PATCH 136/179] create _waitfor_libc method in process --- pwnlib/tubes/process.py | 57 +++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 262dbc8b8..96335c6d2 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -927,18 +927,15 @@ def libc(self): ELF('/lib64/libc-...so') >>> p.close() """ - lib = self._libc() + lib = self._waitfor_libc(timeout=0) lib.describe() return lib def _libc(self): """Function to retrieve the libc library from the current process - Raises: - PwnlibException: In case the libc is not found - Returns: - ELF + ELF or None """ from pwnlib.elf import ELF @@ -949,11 +946,35 @@ def _libc(self): e.address = address return e - self.error( - "Unable to find the libc library in process {}".format( - self.executable - ) - ) + def _waitfor_libc(self, timeout=1): + """Function to retrieve the libc library from the current process waiting for + it to be loaded + + Arguments: + timeout(int): Time to wait for libc to being loaded + + Raises: + PwnlibException: In case the libc is not found in the given timeout + + Returns: + ELF + """ + + limit = time.time() + timeout + while True: + libc = self._libc() + if libc is not None: + return libc + + if time.time() < limit: + time.sleep(0.01) + continue + else: + self.error( + "Unable to find the libc library in process {}".format( + self.executable + ) + ) def heap_explorer(self, timeout=1): """Returns a heap explorer that allows to inspect the items of the libc @@ -982,21 +1003,7 @@ def heap_explorer(self, timeout=1): Returns: HeapExplorer """ - - # wait until libc is loaded in the process or timeout is reached - limit = time.time() + timeout - while True: - try: - libc = self._libc() - break - except PwnlibException as ex: - if str(ex).startswith("Unable to find the libc"): - if time.time() < limit: - time.sleep(0.01) - continue - raise - - return HeapExplorer(self.pid, libc) + return HeapExplorer(self.pid, self._waitfor_libc(timeout=timeout)) @property def elf(self): From d8f5f645134e4e47b9aad78caad092178b9fb448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 10:53:58 +0100 Subject: [PATCH 137/179] change heap_explorer to a method in examples --- pwnlib/heap/glmalloc/__init__.py | 12 ++++----- pwnlib/heap/glmalloc/heap_explorer.py | 36 +++++++++++++-------------- pwnlib/tubes/process.py | 2 +- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py index ddae8bb6f..9903f1b10 100644 --- a/pwnlib/heap/glmalloc/__init__.py +++ b/pwnlib/heap/glmalloc/__init__.py @@ -13,7 +13,7 @@ Get a summary of the items of the arena: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> print(hp.arena().summary()) # doctest: +SKIP ========================== Arena ========================== - Malloc State (0x7fad3f0a5c40) @@ -41,7 +41,7 @@ View the malloc state: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> print(hp.malloc_state()) # doctest: +SKIP ======================== Malloc State (0x7f97053fbc40) ======================== mutex = 0x0 @@ -87,7 +87,7 @@ List the chunks of the bins: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> print(hp.tcaches()) # doctest: +SKIP =================================== Tcaches =================================== [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 @@ -117,7 +117,7 @@ List the chunks of the arena heap: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> print(hp.heap()) # doctest: +SKIP ============================ Heap (0x555635100000) ============================ 0x555635100000 0x250 PREV_IN_USE @@ -167,7 +167,7 @@ Get all the arena information: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> print(hp.arena()) # doctest: +SKIP ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -254,7 +254,7 @@ Access to items of the non main arena: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> hp.arenas_count() # doctest: +SKIP 2 >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] # doctest: +SKIP diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index 2e424e886..335c6d184 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -17,7 +17,7 @@ class HeapExplorer: Examples: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> hp.tcaches_enabled # doctest: +SKIP True >>> print(hp.arena().summary()) # doctest: +SKIP @@ -99,7 +99,7 @@ def arenas_count(self): Examples: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> number_of_arenas = hp.arenas_count() >>> number_of_arenas # doctest: +SKIP 2 @@ -118,7 +118,7 @@ def malloc_state(self, arena_index=0): Examples: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> ms = hp.malloc_state() >>> ms_top = ms.top >>> hex(ms_top) # doctest: +SKIP @@ -178,7 +178,7 @@ def all_arenas_malloc_states(self): Examples: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> mmss = hp.all_arenas_malloc_states() >>> mmss_str = "\\n".join([str(ms) for ms in mmss]) >>> print(mmss_str) # doctest: +SKIP @@ -200,7 +200,7 @@ def heap(self, arena_index=0): Examples: >>> p = process('sh') >>> p.sendline('init='+'A'*0x1000) - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> heap = hp.heap() >>> number_chunks = len(heap.chunks) >>> len(number_chunks) # doctest: +SKIP @@ -268,7 +268,7 @@ def all_arenas_heaps(self): Example: >>> p = process('sh') >>> p.sendline('init='+'A'*0x1000) - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> hhpp = hp.all_arenas_heaps() >>> hhpp_str = "\\n".join([str(h) for h in hhpp]) >>> print(hhpp_str) # doctest: +SKIP @@ -295,7 +295,7 @@ def unsorted_bin(self, arena_index=0): >>> p = process('sh') >>> p.sendline('init='+'A'*0x1000) - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> unsorted_bins = hp.unsorted_bin() >>> unsorted_bins_str = str(unsorted_bins) >>> print(unsorted_bins_str) # doctest: +SKIP @@ -327,7 +327,7 @@ def all_arenas_unsorted_bins(self): Example: >>> p = process('sh') >>> p.sendline('init='+'A'*0x1000) - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> uubb = hp.all_arenas_unsorted_bins() >>> uubb_str = "\\n".join([str(ub) for ub in uubb]) >>> print(uubb_str) # doctest: +SKIP @@ -354,7 +354,7 @@ def small_bins(self, arena_index=0): Examples: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> small_bins = hp.small_bins() >>> print(small_bins) # doctest: +SKIP ================================== Small Bins ================================== @@ -374,7 +374,7 @@ def all_arenas_small_bins(self): Example: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> bb = hp.all_arenas_small_bins() >>> bb_str = "\\n".join([str(b) for b in bb]) >>> print(bb_str) # doctest: +SKIP @@ -401,7 +401,7 @@ def large_bins(self, arena_index=0): Examples: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> large_bins = hp.large_bins() >>> print(large_bins) # doctest: +SKIP ================================== Large Bins ================================== @@ -421,7 +421,7 @@ def all_arenas_large_bins(self): Example: >>> p = process('sh') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> bb = hp.all_arenas_large_bins() >>> bb_str = "\\n".join([str(b) for b in bb]) >>> print(bb_str) # doctest: +SKIP @@ -449,7 +449,7 @@ def fast_bins(self, arena_index=0): Examples: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> fast_bins = hp.fast_bins() >>> print(fast_bins) # doctest: +SKIP ================================== Fast Bins ================================== @@ -471,7 +471,7 @@ def all_arenas_fast_bins(self): Example: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> bb = hp.all_arenas_fast_bins() >>> bb_str = "\\n".join([str(b) for b in bb]) >>> print(bb_str) # doctest: +SKIP @@ -497,7 +497,7 @@ def tcaches(self, arena_index=0): Example: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> try: ... tcaches_str = str(hp.tcaches()) ... except NoTcacheError: @@ -525,7 +525,7 @@ def all_arenas_tcaches(self): Example: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> try: ... ttcc = hp.all_arenas_tcaches() ... tcaches_str = "\\n".join([str(tc) for tc in ttcc]) @@ -558,7 +558,7 @@ def arena(self, arena_index=0): Examples: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> arena = hp.arena() >>> arena_summary = arena.summary() >>> print(arena_summary) # doctest: +SKIP @@ -681,7 +681,7 @@ def all_arenas(self): Example: >>> p = process('sh') >>> p.sendline('init bins') - >>> hp = p.heap_explorer + >>> hp = p.heap_explorer() >>> arenas = hp.all_arenas() >>> arenas_str = "\\n".join([str(a) for a in arenas]) >>> print(arenas_str) # doctest: +SKIP diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 96335c6d2..67b425304 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -988,7 +988,7 @@ def heap_explorer(self, timeout=1): Examples: >>> p = process('sh') # doctest: +SKIP - >>> hp = p.heap_explorer # doctest: +SKIP + >>> hp = p.heap_explorer() # doctest: +SKIP >>> heap = hp.heap() # doctest: +SKIP >>> len(heap.chunks) # doctest: +SKIP 574 From 88fe03d7e9c998eeb30288fb37b79690987249e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 13:23:44 +0100 Subject: [PATCH 138/179] establish minimum width in heap messages --- pwnlib/heap/glmalloc/basic_formatter.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pwnlib/heap/glmalloc/basic_formatter.py b/pwnlib/heap/glmalloc/basic_formatter.py index 8dda5ef30..fbc0b680a 100644 --- a/pwnlib/heap/glmalloc/basic_formatter.py +++ b/pwnlib/heap/glmalloc/basic_formatter.py @@ -12,12 +12,16 @@ def get_terminal_width(): class BasicFormatter(object): _MAXIMUM_WIDTH = 80 + _MINIMUM_WIDTH = 40 def __init__(self): - self.width = self._MAXIMUM_WIDTH term_width = get_terminal_width() - if term_width < self.width: + if term_width > self._MAXIMUM_WIDTH: + self.width = self._MAXIMUM_WIDTH + elif term_width < self._MINIMUM_WIDTH: + self.width = self._MINIMUM_WIDTH + else: self.width = term_width self.title_surrounded_symbol = "=" From f594775cd5160973a0a6176665fe454ed8e6a5c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 13:24:20 +0100 Subject: [PATCH 139/179] use ellipsis in heap_explorer examples --- pwnlib/heap/glmalloc/heap_explorer.py | 418 ++++++++++++-------------- 1 file changed, 195 insertions(+), 223 deletions(-) diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index 335c6d184..1c2c8afb1 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -20,29 +20,28 @@ class HeapExplorer: >>> hp = p.heap_explorer() >>> hp.tcaches_enabled # doctest: +SKIP True - >>> print(hp.arena().summary()) # doctest: +SKIP - ========================== Arena ========================== - - Malloc State (0x7fad3f0a5c40) - top = 0x564c90e90f20 - last_remainder = 0x0 - next = 0x7fad3f0a5c40 - next_free = 0x0 - system_mem = 0x21000 - - Heap (0x564c90e83000) - chunks_count = 0x245 - top: addr = 0x564c90e90f20, size = 0x130e0 + >>> print(hp.arena().summary()) # doctest: +ELLIPSIS + =====... Arena =====... + - Malloc State (...) + top = ... + last_remainder = ... + next = ... + next_free = ... + system_mem = ... + - Heap (...) + chunks_count = ... + top: addr = ..., size = ... - Tcaches - [23] 0x188 (1) - [41] 0x2a8 (1) + ... - Fast bins - [-] No chunks found + ... - Unsorted bins - [-] No chunks found + ... - Small bins - [-] No chunks found + ... - Large bins - [-] No chunks found - =========================================================== + ... + =====... """ @@ -121,52 +120,48 @@ def malloc_state(self, arena_index=0): >>> hp = p.heap_explorer() >>> ms = hp.malloc_state() >>> ms_top = ms.top - >>> hex(ms_top) # doctest: +SKIP - '0x55c4669ff6e0' + >>> hex(ms_top) # doctest: +ELLIPSIS + '0x...' >>> ms_address = ms.address - >>> hex(ms_address) # doctest: +SKIP - '0x7f97053fbc40' + >>> hex(ms_address) # doctest: +ELLIPSIS + '0x...' >>> ms_str = str(ms) - >>> print(ms_str) # doctest: +SKIP - ======================== Malloc State (0x7f97053fbc40) ======================== - mutex = 0x0 - flags = 0x1 - have_fastchunks = 0x0 + >>> print(ms_str) # doctest: +ELLIPSIS + ====... Malloc State (0x...) ====... + mutex = 0x... + flags = 0x... + have_fastchunks = 0x... fastbinsY - [0] 0x20 => 0x0 - [1] 0x30 => 0x0 - [2] 0x40 => 0x0 - [3] 0x50 => 0x0 - [4] 0x60 => 0x55c4669fdc20 - [5] 0x70 => 0x0 - [6] 0x80 => 0x0 - [7] 0x90 => 0x0 - [8] 0xa0 => 0x0 - [9] 0xb0 => 0x0 - top = 0x55c4669ff6e0 - last_remainder = 0x0 + [0] 0x20 => 0x... + [1] 0x30 => 0x... + [2] 0x40 => 0x... + [3] 0x50 => 0x... + [4] 0x60 => 0x... + [5] 0x70 => 0x... + [6] 0x80 => 0x... + [7] 0x90 => 0x... + [8] 0xa0 => 0x... + [9] 0xb0 => 0x... + top = 0x... + last_remainder = 0x... bins Unsorted bins - [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + [0] fd=0x... bk=0x... Small bins - [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 - [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 - ....... - [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 - [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + [1] 0x20 fd=0x... bk=0x... + [2] 0x30 fd=0x... bk=0x... + ... Large bins - [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 - [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 - ...... - [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 - [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 - binmap = [0x0, 0x0, 0x0, 0x0] - next = 0x7f96f8000020 - next_free = 0x0 - attached_threads = 0x1 - system_mem = 0x21000 - max_system_mem = 0x21000 - ================================================================================ + [63] 0x400 fd=0x... bk=0x... + [64] 0x440 fd=0x... bk=0x... + ... + binmap = [0x..., 0x..., 0x..., 0x...] + next = 0x... + next_free = 0x... + attached_threads = 0x... + system_mem = 0x... + max_system_mem = 0x... + ==========================... """ return self.all_arenas_malloc_states()[arena_index] @@ -181,7 +176,42 @@ def all_arenas_malloc_states(self): >>> hp = p.heap_explorer() >>> mmss = hp.all_arenas_malloc_states() >>> mmss_str = "\\n".join([str(ms) for ms in mmss]) - >>> print(mmss_str) # doctest: +SKIP + >>> print(mmss_str) # doctest: +ELLIPSIS + ====... Malloc State (0x...) ====... + mutex = 0x... + flags = 0x... + have_fastchunks = 0x... + fastbinsY + [0] 0x20 => 0x... + [1] 0x30 => 0x... + [2] 0x40 => 0x... + [3] 0x50 => 0x... + [4] 0x60 => 0x... + [5] 0x70 => 0x... + [6] 0x80 => 0x... + [7] 0x90 => 0x... + [8] 0xa0 => 0x... + [9] 0xb0 => 0x... + top = 0x... + last_remainder = 0x... + bins + Unsorted bins + [0] fd=0x... bk=0x... + Small bins + [1] 0x20 fd=0x... bk=0x... + [2] 0x30 fd=0x... bk=0x... + ... + Large bins + [63] 0x400 fd=0x... bk=0x... + [64] 0x440 fd=0x... bk=0x... + ... + binmap = [0x..., 0x..., 0x..., 0x...] + next = 0x... + next_free = 0x... + attached_threads = 0x... + system_mem = 0x... + max_system_mem = 0x... + ... """ return self._malloc_state_parser.parse_all_from_main_malloc_state_address( self._main_arena_address @@ -207,54 +237,13 @@ def heap(self, arena_index=0): 574 >>> top_chunk = heap.top >>> top_chunk_address = top_chunk.address - >>> hex(top_chunk_address) # doctest: +SKIP - '0x56080f5dbb00' - >>> heap_str = str(heap) - >>> print(heap_str) # doctest: +SKIP - ============================ Heap (0x555635100000) ============================ - 0x555635100000 0x250 PREV_IN_USE - 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100250 0x410 PREV_IN_USE - 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = - 0x555635100660 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100780 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x5556351008a0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 10 00 10 35 56 55 00 00 ...........5VU.. - 0x555635100900 0x60 PREV_IN_USE - b0 08 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100960 0x60 PREV_IN_USE - 10 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x5556351009c0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100a20 0x60 PREV_IN_USE - 70 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 p..5VU.....5VU.. - 0x555635100a80 0x60 PREV_IN_USE - 30 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 0..5VU.....5VU.. - 0x555635100ae0 0x60 PREV_IN_USE - 90 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100b40 0x60 PREV_IN_USE - f0 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100ba0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100c00 0x20 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100c20 0x60 PREV_IN_USE - a0 0b 10 35 56 55 00 00 00 00 00 00 00 00 00 00 ...5VU.......... - 0x555635100c80 0x20 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100ca0 0x1010 PREV_IN_USE - a0 9c 6e d6 8b 7f 00 00 40 1d 10 35 56 55 00 00 ..n.....@..5VU.. - 0x555635101cb0 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635101d40 0x910 PREV_IN_USE - a0 0c 10 35 56 55 00 00 a0 9c 6e d6 8b 7f 00 00 ...5VU....n..... - 0x555635102650 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x5556351026e0 0x1e920 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - ================================================================================ + >>> hex(top_chunk_address) # doctest: +ELLIPSIS + '0x...' + >>> print(heap) # doctest: +ELLIPSIS + =====... Heap (0x...) =====... + 0x... 0x... + ... + ========... """ malloc_state = self.malloc_state(arena_index) return self._heap_parser.parse_from_malloc_state(malloc_state) @@ -271,7 +260,10 @@ def all_arenas_heaps(self): >>> hp = p.heap_explorer() >>> hhpp = hp.all_arenas_heaps() >>> hhpp_str = "\\n".join([str(h) for h in hhpp]) - >>> print(hhpp_str) # doctest: +SKIP + >>> print(hhpp_str) # doctest: +ELLIPSIS + =====... Heap (0x...) =====... + 0x... 0x... + ... """ malloc_states = self.all_arenas_malloc_states() heaps = [] @@ -299,10 +291,9 @@ def unsorted_bin(self, arena_index=0): >>> unsorted_bins = hp.unsorted_bin() >>> unsorted_bins_str = str(unsorted_bins) >>> print(unsorted_bins_str) # doctest: +SKIP - ================================ Unsorted Bins ================================ - [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 - 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 - ================================================================================ + =====... Unsorted Bins =====... + ... + =====... >>> unsorted_bin = unsorted_bins[0] >>> unsorted_bin_entry = unsorted_bin.bin_entry >>> unsorted_bin_entry.fd == unsorted_bin.fd @@ -330,7 +321,9 @@ def all_arenas_unsorted_bins(self): >>> hp = p.heap_explorer() >>> uubb = hp.all_arenas_unsorted_bins() >>> uubb_str = "\\n".join([str(ub) for ub in uubb]) - >>> print(uubb_str) # doctest: +SKIP + >>> print(uubb_str) # doctest: +ELLIPSIS + =====... Unsorted Bins =====... + ... """ unsorted_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -356,10 +349,10 @@ def small_bins(self, arena_index=0): >>> p.sendline('init bins') >>> hp = p.heap_explorer() >>> small_bins = hp.small_bins() - >>> print(small_bins) # doctest: +SKIP - ================================== Small Bins ================================== - [-] No chunks found - ================================================================================ + >>> print(small_bins) # doctest: +ELLIPSIS + =====... Small Bins =====... + ... + =====... """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_small_bins_from_malloc_state( @@ -377,7 +370,9 @@ def all_arenas_small_bins(self): >>> hp = p.heap_explorer() >>> bb = hp.all_arenas_small_bins() >>> bb_str = "\\n".join([str(b) for b in bb]) - >>> print(bb_str) # doctest: +SKIP + >>> print(bb_str) # doctest: +ELLIPSIS + =====... Small Bins =====... + ... """ all_small_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -403,10 +398,10 @@ def large_bins(self, arena_index=0): >>> p.sendline('init bins') >>> hp = p.heap_explorer() >>> large_bins = hp.large_bins() - >>> print(large_bins) # doctest: +SKIP - ================================== Large Bins ================================== - [-] No chunks found - ================================================================================ + >>> print(large_bins) # doctest: +ELLIPSIS + =====... Large Bins =====... + ... + =====... """ malloc_state = self.malloc_state(arena_index) return self._bin_parser.parse_large_bins_from_malloc_state( @@ -424,8 +419,9 @@ def all_arenas_large_bins(self): >>> hp = p.heap_explorer() >>> bb = hp.all_arenas_large_bins() >>> bb_str = "\\n".join([str(b) for b in bb]) - >>> print(bb_str) # doctest: +SKIP - + >>> print(bb_str) # doctest: +ELLIPSIS + =====... Large Bins =====... + ... """ all_large_bins = [] for malloc_state in self.all_arenas_malloc_states(): @@ -451,11 +447,10 @@ def fast_bins(self, arena_index=0): >>> p.sendline('init bins') >>> hp = p.heap_explorer() >>> fast_bins = hp.fast_bins() - >>> print(fast_bins) # doctest: +SKIP - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 - 5100ba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ + >>> print(fast_bins) # doctest: +ELLIPSIS + =====... Fast Bins =====... + ... + ======... >>> number_of_fastbins = len(fast_bins) >>> fast_bins_counts = [len(fast_bin) for fast_bin in fast_bins] """ @@ -474,7 +469,9 @@ def all_arenas_fast_bins(self): >>> hp = p.heap_explorer() >>> bb = hp.all_arenas_fast_bins() >>> bb_str = "\\n".join([str(b) for b in bb]) - >>> print(bb_str) # doctest: +SKIP + >>> print(bb_str) # doctest: +ELLIPSIS + =====... Fast Bins =====... + ... """ malloc_states = self.all_arenas_malloc_states() all_fast_bins = [] @@ -561,112 +558,87 @@ def arena(self, arena_index=0): >>> hp = p.heap_explorer() >>> arena = hp.arena() >>> arena_summary = arena.summary() - >>> print(arena_summary) # doctest: +SKIP - ========================== Arena ========================== - - Malloc State (0x7fad3f0a5c40) - top = 0x564c90e90f20 - last_remainder = 0x0 - next = 0x7fad3f0a5c40 - next_free = 0x0 - system_mem = 0x21000 - - Heap (0x564c90e83000) - chunks_count = 0x245 - top: addr = 0x564c90e90f20, size = 0x130e0 + >>> print(arena_summary) # doctest: +ELLIPSIS + =====... Arena =====... + - Malloc State (0x...) + top = 0x... + last_remainder = 0x... + next = 0x... + next_free = 0x... + system_mem = 0x... + - Heap (0x...) + chunks_count = 0x... + top: addr = 0x..., size = 0x... - Tcaches - [23] 0x188 (1) - [41] 0x2a8 (1) + ... - Fast bins - [-] No chunks found + ... - Unsorted bins - [-] No chunks found + ... - Small bins - [-] No chunks found + ... - Large bins - [-] No chunks found - =========================================================== + ... + ======... >>> arena_str = str(arena) >>> print(arena_str) # doctest: +SKIP - ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ======================== Malloc State (0x7f97053fbc40) ======================== - mutex = 0x0 - flags = 0x1 - have_fastchunks = 0x0 + +++++... Arena +++++... + +++++++++++... + =====... Malloc State (0x...) =====... + mutex = 0x... + flags = 0x... + have_fastchunks = 0x... fastbinsY - [0] 0x20 => 0x0 - [1] 0x30 => 0x0 - [2] 0x40 => 0x0 - [3] 0x50 => 0x0 - [4] 0x60 => 0x55c4669fdc20 - [5] 0x70 => 0x0 - [6] 0x80 => 0x0 - [7] 0x90 => 0x0 - [8] 0xa0 => 0x0 - [9] 0xb0 => 0x0 - top = 0x55c4669ff6e0 - last_remainder = 0x0 + [0] 0x20 => 0x... + [1] 0x30 => 0x... + [2] 0x40 => 0x... + [3] 0x50 => 0x... + [4] 0x60 => 0x... + [5] 0x70 => 0x... + [6] 0x80 => 0x... + [7] 0x90 => 0x... + [8] 0xa0 => 0x... + [9] 0xb0 => 0x... + top = 0x... + last_remainder = 0x... bins Unsorted bins - [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + [0] fd=0x... bk=0x... Small bins - [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 - [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 - ........ - [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 - [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + [1] 0x20 fd=0x... bk=0x... + [2] 0x30 fd=0x... bk=0x... + ... Large bins - [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 - [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 - ........ - [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 - [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 - binmap = [0x0, 0x0, 0x0, 0x0] - next = 0x7f96f8000020 - next_free = 0x0 - attached_threads = 0x1 - system_mem = 0x21000 - max_system_mem = 0x21000 - ================================================================================ - ============================ Heap (0x55c4669fd000) ============================ - 0x55c4669fd000 0x250 PREV_IN_USE - 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669fd250 0x410 PREV_IN_USE - 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = - 0x55c4669fd660 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - .......... - 0x55c4669fdca0 0x1010 PREV_IN_USE - a0 bc 3f 05 97 7f 00 00 40 ed 9f 66 c4 55 00 00 ..?.....@..f.U.. - 0x55c4669fecb0 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669fed40 0x910 PREV_IN_USE - a0 dc 9f 66 c4 55 00 00 a0 bc 3f 05 97 7f 00 00 ...f.U....?..... - 0x55c4669ff650 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669ff6e0 0x1e920 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - ================================================================================ - =================================== Tcaches =================================== - [4] Tcache 0x58 (7) => Chunk(0x55c4669fdb50 0x60 PREV_IN_USE) => Chunk(0x55c4669 - fdaf0 0x60 PREV_IN_USE) => Chunk(0x55c4669fda90 0x60 PREV_IN_USE) => Chunk(0x55c - 4669fda30 0x60 PREV_IN_USE) => Chunk(0x55c4669fd970 0x60 PREV_IN_USE) => Chunk(0 - x55c4669fd910 0x60 PREV_IN_USE) => Chunk(0x55c4669fd8b0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 - 69fdba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================ Unsorted Bins ================================ - [0] Unsorted Bin (2) => Chunk(0x55c4669fed40 0x910 PREV_IN_USE) => Chunk(0x55c46 - 69fdca0 0x1010 PREV_IN_USE) => 0x7f97053fbca0 - ================================================================================ - ================================== Small Bins ================================== - [-] No chunks found - ================================================================================ - ================================== Large Bins ================================== - [-] No chunks found - ================================================================================ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + [63] 0x400 fd=0x... bk=0x... + [64] 0x440 fd=0x... bk=0x... + ... + binmap = [0x..., 0x..., 0x..., 0x...] + next = 0x... + next_free = 0x... + attached_threads = 0x... + system_mem = 0x... + max_system_mem = 0x... + =====... + =====... Heap (0x...) =====... + 0x... 0x... + ... + =====... + =====... Tcaches =====... + ... + =====... + =====... Fast Bins ======... + ... + =====... + =====... Unsorted Bins =====... + ... + =====... + =====... Small Bins =====... + ... + =====... + =====... Large Bins =====... + ... + =====... + ++++++... """ malloc_state = self.malloc_state(arena_index) From 2941124e2820e919a7c5a9563ab28f69e48e9ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 13:40:59 +0100 Subject: [PATCH 140/179] set glmalloc examples as code-blocks --- pwnlib/heap/glmalloc/__init__.py | 581 ++++++++++++++++--------------- 1 file changed, 297 insertions(+), 284 deletions(-) diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py index 9903f1b10..795b7597e 100644 --- a/pwnlib/heap/glmalloc/__init__.py +++ b/pwnlib/heap/glmalloc/__init__.py @@ -12,310 +12,323 @@ Get a summary of the items of the arena: - >>> p = process('sh') - >>> hp = p.heap_explorer() - >>> print(hp.arena().summary()) # doctest: +SKIP - ========================== Arena ========================== - - Malloc State (0x7fad3f0a5c40) - top = 0x564c90e90f20 - last_remainder = 0x0 - next = 0x7fad3f0a5c40 - next_free = 0x0 - system_mem = 0x21000 - - Heap (0x564c90e83000) - chunks_count = 0x245 - top: addr = 0x564c90e90f20, size = 0x130e0 - - Tcaches - [23] 0x188 (1) - [41] 0x2a8 (1) - - Fast bins - [-] No chunks found - - Unsorted bins - [-] No chunks found - - Small bins - [-] No chunks found - - Large bins - [-] No chunks found - =========================================================== + .. code-block:: python + + >>> p = process('sh') + >>> hp = p.heap_explorer() + >>> print(hp.arena().summary()) + ========================== Arena ========================== + - Malloc State (0x7fad3f0a5c40) + top = 0x564c90e90f20 + last_remainder = 0x0 + next = 0x7fad3f0a5c40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x564c90e83000) + chunks_count = 0x245 + top: addr = 0x564c90e90f20, size = 0x130e0 + - Tcaches + [23] 0x188 (1) + [41] 0x2a8 (1) + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + =========================================================== View the malloc state: - >>> p = process('sh') - >>> hp = p.heap_explorer() - >>> print(hp.malloc_state()) # doctest: +SKIP - ======================== Malloc State (0x7f97053fbc40) ======================== - mutex = 0x0 - flags = 0x1 - have_fastchunks = 0x0 - fastbinsY - [0] 0x20 => 0x0 - [1] 0x30 => 0x0 - [2] 0x40 => 0x0 - [3] 0x50 => 0x0 - [4] 0x60 => 0x55c4669fdc20 - [5] 0x70 => 0x0 - [6] 0x80 => 0x0 - [7] 0x90 => 0x0 - [8] 0xa0 => 0x0 - [9] 0xb0 => 0x0 - top = 0x55c4669ff6e0 - last_remainder = 0x0 - bins - Unsorted bins - [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 - Small bins - [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 - [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 - ....... - [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 - [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 - Large bins - [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 - [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 - ...... - [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 - [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 - binmap = [0x0, 0x0, 0x0, 0x0] - next = 0x7f96f8000020 - next_free = 0x0 - attached_threads = 0x1 - system_mem = 0x21000 - max_system_mem = 0x21000 - ================================================================================ + .. code-block:: python + + >>> p = process('sh') + >>> hp = p.heap_explorer() + >>> print(hp.malloc_state()) + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 + top = 0x55c4669ff6e0 + last_remainder = 0x0 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ....... + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ...... + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 + next_free = 0x0 + attached_threads = 0x1 + system_mem = 0x21000 + max_system_mem = 0x21000 + ================================================================================ List the chunks of the bins: - >>> p = process('sh') - >>> hp = p.heap_explorer() - >>> print(hp.tcaches()) # doctest: +SKIP - =================================== Tcaches =================================== - [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 - [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 - ================================================================================ - >>> print(hp.fast_bins()) # doctest: +SKIP - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 - 5100ba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - >>> print(hp.unsorted_bin()) # doctest: +SKIP - ================================ Unsorted Bins ================================ - [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 - 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 - ================================================================================ - >>> print(hp.small_bins()) # doctest: +SKIP - ================================== Small Bins ================================== - [-] No chunks found - ================================================================================ - >>> print(hp.large_bins()) # doctest: +SKIP - ================================== Large Bins ================================== - [-] No chunks found - ================================================================================ + .. code-block:: python + + >>> p = process('sh') + >>> hp = p.heap_explorer() + >>> print(hp.tcaches()) # doctest: +SKIP + =================================== Tcaches =================================== + [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 + [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.fast_bins()) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 + 5100ba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.unsorted_bin()) # doctest: +SKIP + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 + 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 + ================================================================================ + >>> print(hp.small_bins()) # doctest: +SKIP + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + >>> print(hp.large_bins()) # doctest: +SKIP + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ List the chunks of the arena heap: - >>> p = process('sh') - >>> hp = p.heap_explorer() - >>> print(hp.heap()) # doctest: +SKIP - ============================ Heap (0x555635100000) ============================ - 0x555635100000 0x250 PREV_IN_USE - 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100250 0x410 PREV_IN_USE - 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = - 0x555635100660 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100780 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x5556351008a0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 10 00 10 35 56 55 00 00 ...........5VU.. - 0x555635100900 0x60 PREV_IN_USE - b0 08 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100960 0x60 PREV_IN_USE - 10 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x5556351009c0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100a20 0x60 PREV_IN_USE - 70 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 p..5VU.....5VU.. - 0x555635100a80 0x60 PREV_IN_USE - 30 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 0..5VU.....5VU.. - 0x555635100ae0 0x60 PREV_IN_USE - 90 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100b40 0x60 PREV_IN_USE - f0 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. - 0x555635100ba0 0x60 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100c00 0x20 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100c20 0x60 PREV_IN_USE - a0 0b 10 35 56 55 00 00 00 00 00 00 00 00 00 00 ...5VU.......... - 0x555635100c80 0x20 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635100ca0 0x1010 PREV_IN_USE - a0 9c 6e d6 8b 7f 00 00 40 1d 10 35 56 55 00 00 ..n.....@..5VU.. - 0x555635101cb0 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x555635101d40 0x910 PREV_IN_USE - a0 0c 10 35 56 55 00 00 a0 9c 6e d6 8b 7f 00 00 ...5VU....n..... - 0x555635102650 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x5556351026e0 0x1e920 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - ================================================================================ + .. code-block:: python -Get all the arena information: + >>> p = process('sh') + >>> hp = p.heap_explorer() + >>> print(hp.heap()) # doctest: +SKIP + ============================ Heap (0x555635100000) ============================ + 0x555635100000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x555635100660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100780 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351008a0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 10 00 10 35 56 55 00 00 ...........5VU.. + 0x555635100900 0x60 PREV_IN_USE + b0 08 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100960 0x60 PREV_IN_USE + 10 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x5556351009c0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100a20 0x60 PREV_IN_USE + 70 09 10 35 56 55 00 00 10 00 10 35 56 55 00 00 p..5VU.....5VU.. + 0x555635100a80 0x60 PREV_IN_USE + 30 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 0..5VU.....5VU.. + 0x555635100ae0 0x60 PREV_IN_USE + 90 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100b40 0x60 PREV_IN_USE + f0 0a 10 35 56 55 00 00 10 00 10 35 56 55 00 00 ...5VU.....5VU.. + 0x555635100ba0 0x60 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c00 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100c20 0x60 PREV_IN_USE + a0 0b 10 35 56 55 00 00 00 00 00 00 00 00 00 00 ...5VU.......... + 0x555635100c80 0x20 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635100ca0 0x1010 PREV_IN_USE + a0 9c 6e d6 8b 7f 00 00 40 1d 10 35 56 55 00 00 ..n.....@..5VU.. + 0x555635101cb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x555635101d40 0x910 PREV_IN_USE + a0 0c 10 35 56 55 00 00 a0 9c 6e d6 8b 7f 00 00 ...5VU....n..... + 0x555635102650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x5556351026e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ - >>> p = process('sh') - >>> hp = p.heap_explorer() - >>> print(hp.arena()) # doctest: +SKIP - ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ======================== Malloc State (0x7f97053fbc40) ======================== - mutex = 0x0 - flags = 0x1 - have_fastchunks = 0x0 - fastbinsY - [0] 0x20 => 0x0 - [1] 0x30 => 0x0 - [2] 0x40 => 0x0 - [3] 0x50 => 0x0 - [4] 0x60 => 0x55c4669fdc20 - [5] 0x70 => 0x0 - [6] 0x80 => 0x0 - [7] 0x90 => 0x0 - [8] 0xa0 => 0x0 - [9] 0xb0 => 0x0 - top = 0x55c4669ff6e0 - last_remainder = 0x0 - bins - Unsorted bins - [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 - Small bins - [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 - [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 - ........ - [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 - [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 - Large bins - [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 - [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 - ........ - [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 - [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 - binmap = [0x0, 0x0, 0x0, 0x0] - next = 0x7f96f8000020 - next_free = 0x0 - attached_threads = 0x1 - system_mem = 0x21000 - max_system_mem = 0x21000 - ================================================================================ - ============================ Heap (0x55c4669fd000) ============================ - 0x55c4669fd000 0x250 PREV_IN_USE - 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669fd250 0x410 PREV_IN_USE - 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = - 0x55c4669fd660 0x120 PREV_IN_USE - 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - .......... - 0x55c4669fdca0 0x1010 PREV_IN_USE - a0 bc 3f 05 97 7f 00 00 40 ed 9f 66 c4 55 00 00 ..?.....@..f.U.. - 0x55c4669fecb0 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669fed40 0x910 PREV_IN_USE - a0 dc 9f 66 c4 55 00 00 a0 bc 3f 05 97 7f 00 00 ...f.U....?..... - 0x55c4669ff650 0x90 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - 0x55c4669ff6e0 0x1e920 PREV_IN_USE - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ - ================================================================================ - =================================== Tcaches =================================== - [4] Tcache 0x58 (7) => Chunk(0x55c4669fdb50 0x60 PREV_IN_USE) => Chunk(0x55c4669 - fdaf0 0x60 PREV_IN_USE) => Chunk(0x55c4669fda90 0x60 PREV_IN_USE) => Chunk(0x55c - 4669fda30 0x60 PREV_IN_USE) => Chunk(0x55c4669fd970 0x60 PREV_IN_USE) => Chunk(0 - x55c4669fd910 0x60 PREV_IN_USE) => Chunk(0x55c4669fd8b0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 - 69fdba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================ Unsorted Bins ================================ - [0] Unsorted Bin (2) => Chunk(0x55c4669fed40 0x910 PREV_IN_USE) => Chunk(0x55c46 - 69fdca0 0x1010 PREV_IN_USE) => 0x7f97053fbca0 - ================================================================================ - ================================== Small Bins ================================== - [-] No chunks found - ================================================================================ - ================================== Large Bins ================================== - [-] No chunks found - ================================================================================ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +Get all the arena information: + .. code-block:: python -Access to items of the non main arena: - >>> p = process('sh') - >>> hp = p.heap_explorer() - >>> hp.arenas_count() # doctest: +SKIP - 2 - >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] # doctest: +SKIP - ==================================== Arena ==================================== - - Malloc State (0x7f97053fbc40) + >>> p = process('sh') + >>> hp = p.heap_explorer() + >>> print(hp.arena()) # doctest: +SKIP + ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ======================== Malloc State (0x7f97053fbc40) ======================== + mutex = 0x0 + flags = 0x1 + have_fastchunks = 0x0 + fastbinsY + [0] 0x20 => 0x0 + [1] 0x30 => 0x0 + [2] 0x40 => 0x0 + [3] 0x50 => 0x0 + [4] 0x60 => 0x55c4669fdc20 + [5] 0x70 => 0x0 + [6] 0x80 => 0x0 + [7] 0x90 => 0x0 + [8] 0xa0 => 0x0 + [9] 0xb0 => 0x0 top = 0x55c4669ff6e0 last_remainder = 0x0 - next = 0x7f9700000020 - next_free = 0x0 - system_mem = 0x21000 - - Heap (0x55c4669fd000) - chunks_count = 0x15 - top: addr = 0x55c4669ff6e0, size = 0x1e920 - - Tcaches - [4] 0x58 (7) - - Fast bins - [4] 0x60 (2) - - Unsorted bins - [0] 0x0 (2) - - Small bins - [-] No chunks found - - Large bins - [-] No chunks found - ================================================================================ - ==================================== Arena ==================================== - - Malloc State (0x7f9700000020) - top = 0x7f9700002b30 - last_remainder = 0x0 - next = 0x7f97053fbc40 + bins + Unsorted bins + [0] fd=0x55c4669fed40 bk=0x55c4669fdca0 + Small bins + [1] 0x20 fd=0x7f97053fbcb0 bk=0x7f97053fbcb0 + [2] 0x30 fd=0x7f97053fbcc0 bk=0x7f97053fbcc0 + ........ + [61] 0x3e0 fd=0x7f97053fc070 bk=0x7f97053fc070 + [62] 0x3f0 fd=0x7f97053fc080 bk=0x7f97053fc080 + Large bins + [63] 0x400 fd=0x7f97053fc090 bk=0x7f97053fc090 + [64] 0x440 fd=0x7f97053fc0a0 bk=0x7f97053fc0a0 + ........ + [125] 0x80000 fd=0x7f97053fc470 bk=0x7f97053fc470 + [126] 0x100000 fd=0x7f97053fc480 bk=0x7f97053fc480 + binmap = [0x0, 0x0, 0x0, 0x0] + next = 0x7f96f8000020 next_free = 0x0 + attached_threads = 0x1 system_mem = 0x21000 - - Heap (0x7f97000008c0) - chunks_count = 0x4 - top: addr = 0x7f9700002b30, size = 0x1e4d0 - - Tcaches - [-] No chunks found - - Fast bins - [-] No chunks found - - Unsorted bins - [-] No chunks found - - Small bins - [-] No chunks found - - Large bins - [-] No chunks found - ================================================================================ - >>> _ = [print(ms) for ms in hp.all_arenas_fast_bins()] # doctest: +SKIP - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 - 69fdba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - ================================== Fast Bins ================================== - [-] No chunks found - ================================================================================ - >>> print(hp.fast_bins()) # doctest: +SKIP - ================================== Fast Bins ================================== - [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c4669fdba0 0x60 PREV_IN_USE) => 0x0 - ================================================================================ - >>> print(hp.fast_bins(arena_index=1)) # doctest: +SKIP - ================================== Fast Bins ================================== - [-] No chunks found - ================================================================================ + max_system_mem = 0x21000 + ================================================================================ + ============================ Heap (0x55c4669fd000) ============================ + 0x55c4669fd000 0x250 PREV_IN_USE + 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fd250 0x410 PREV_IN_USE + 61 61 61 0a 0a 20 76 65 72 73 69 6f 6e 20 3d 20 aaa.. version = + 0x55c4669fd660 0x120 PREV_IN_USE + 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + .......... + 0x55c4669fdca0 0x1010 PREV_IN_USE + a0 bc 3f 05 97 7f 00 00 40 ed 9f 66 c4 55 00 00 ..?.....@..f.U.. + 0x55c4669fecb0 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669fed40 0x910 PREV_IN_USE + a0 dc 9f 66 c4 55 00 00 a0 bc 3f 05 97 7f 00 00 ...f.U....?..... + 0x55c4669ff650 0x90 + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 0x55c4669ff6e0 0x1e920 PREV_IN_USE + 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + ================================================================================ + =================================== Tcaches =================================== + [4] Tcache 0x58 (7) => Chunk(0x55c4669fdb50 0x60 PREV_IN_USE) => Chunk(0x55c4669 + fdaf0 0x60 PREV_IN_USE) => Chunk(0x55c4669fda90 0x60 PREV_IN_USE) => Chunk(0x55c + 4669fda30 0x60 PREV_IN_USE) => Chunk(0x55c4669fd970 0x60 PREV_IN_USE) => Chunk(0 + x55c4669fd910 0x60 PREV_IN_USE) => Chunk(0x55c4669fd8b0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 + 69fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================ Unsorted Bins ================================ + [0] Unsorted Bin (2) => Chunk(0x55c4669fed40 0x910 PREV_IN_USE) => Chunk(0x55c46 + 69fdca0 0x1010 PREV_IN_USE) => 0x7f97053fbca0 + ================================================================================ + ================================== Small Bins ================================== + [-] No chunks found + ================================================================================ + ================================== Large Bins ================================== + [-] No chunks found + ================================================================================ + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +Access to items of the non main arena: + + .. code-block:: python + + >>> p = process('sh') + >>> hp = p.heap_explorer() + >>> hp.arenas_count() # doctest: +SKIP + 2 + >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] # doctest: +SKIP + ==================================== Arena ==================================== + - Malloc State (0x7f97053fbc40) + top = 0x55c4669ff6e0 + last_remainder = 0x0 + next = 0x7f9700000020 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x55c4669fd000) + chunks_count = 0x15 + top: addr = 0x55c4669ff6e0, size = 0x1e920 + - Tcaches + [4] 0x58 (7) + - Fast bins + [4] 0x60 (2) + - Unsorted bins + [0] 0x0 (2) + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + ================================================================================ + ==================================== Arena ==================================== + - Malloc State (0x7f9700000020) + top = 0x7f9700002b30 + last_remainder = 0x0 + next = 0x7f97053fbc40 + next_free = 0x0 + system_mem = 0x21000 + - Heap (0x7f97000008c0) + chunks_count = 0x4 + top: addr = 0x7f9700002b30, size = 0x1e4d0 + - Tcaches + [-] No chunks found + - Fast bins + [-] No chunks found + - Unsorted bins + [-] No chunks found + - Small bins + [-] No chunks found + - Large bins + [-] No chunks found + ================================================================================ + >>> _ = [print(ms) for ms in hp.all_arenas_fast_bins()] # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 + 69fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + ================================== Fast Bins ================================== + [-] No chunks found + ================================================================================ + >>> print(hp.fast_bins()) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c4669fdba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + >>> print(hp.fast_bins(arena_index=1)) # doctest: +SKIP + ================================== Fast Bins ================================== + [-] No chunks found + ================================================================================ """ From 782b4ddc802c297070616da340d73a2314a753a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 13:43:16 +0100 Subject: [PATCH 141/179] remove SKIP from glmalloc examples --- pwnlib/heap/glmalloc/__init__.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py index 795b7597e..34c951e73 100644 --- a/pwnlib/heap/glmalloc/__init__.py +++ b/pwnlib/heap/glmalloc/__init__.py @@ -94,26 +94,26 @@ >>> p = process('sh') >>> hp = p.heap_explorer() - >>> print(hp.tcaches()) # doctest: +SKIP + >>> print(hp.tcaches()) =================================== Tcaches =================================== [23] Tcache 0x188 (1) => Chunk(0x56383e3c0250 0x190 PREV_IN_USE) => 0x0 [41] Tcache 0x2a8 (1) => Chunk(0x56383e3bffa0 0x2b0 PREV_IN_USE) => 0x0 ================================================================================ - >>> print(hp.fast_bins()) # doctest: +SKIP + >>> print(hp.fast_bins()) ================================== Fast Bins ================================== [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 5100ba0 0x60 PREV_IN_USE) => 0x0 ================================================================================ - >>> print(hp.unsorted_bin()) # doctest: +SKIP + >>> print(hp.unsorted_bin()) ================================ Unsorted Bins ================================ [0] Unsorted Bin (2) => Chunk(0x555635101d40 0x910 PREV_IN_USE) => Chunk(0x55563 5100ca0 0x1010 PREV_IN_USE) => 0x7f8bd66e9ca0 ================================================================================ - >>> print(hp.small_bins()) # doctest: +SKIP + >>> print(hp.small_bins()) ================================== Small Bins ================================== [-] No chunks found ================================================================================ - >>> print(hp.large_bins()) # doctest: +SKIP + >>> print(hp.large_bins()) ================================== Large Bins ================================== [-] No chunks found ================================================================================ @@ -126,7 +126,7 @@ >>> p = process('sh') >>> hp = p.heap_explorer() - >>> print(hp.heap()) # doctest: +SKIP + >>> print(hp.heap()) ============================ Heap (0x555635100000) ============================ 0x555635100000 0x250 PREV_IN_USE 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................ @@ -178,7 +178,7 @@ >>> p = process('sh') >>> hp = p.heap_explorer() - >>> print(hp.arena()) # doctest: +SKIP + >>> print(hp.arena()) ++++++++++++++++++++++++++++++++++++ Arena ++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ======================== Malloc State (0x7f97053fbc40) ======================== @@ -268,9 +268,9 @@ >>> p = process('sh') >>> hp = p.heap_explorer() - >>> hp.arenas_count() # doctest: +SKIP + >>> hp.arenas_count() 2 - >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] # doctest: +SKIP + >>> _ = [print(arena.summary()) for arena in hp.all_arenas()] ==================================== Arena ==================================== - Malloc State (0x7f97053fbc40) top = 0x55c4669ff6e0 @@ -313,7 +313,7 @@ - Large bins [-] No chunks found ================================================================================ - >>> _ = [print(ms) for ms in hp.all_arenas_fast_bins()] # doctest: +SKIP + >>> _ = [print(ms) for ms in hp.all_arenas_fast_bins()] ================================== Fast Bins ================================== [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c46 69fdba0 0x60 PREV_IN_USE) => 0x0 @@ -321,11 +321,11 @@ ================================== Fast Bins ================================== [-] No chunks found ================================================================================ - >>> print(hp.fast_bins()) # doctest: +SKIP + >>> print(hp.fast_bins()) ================================== Fast Bins ================================== [4] Fast Bin 0x60 (2) => Chunk(0x55c4669fdc20 0x60 PREV_IN_USE) => Chunk(0x55c4669fdba0 0x60 PREV_IN_USE) => 0x0 ================================================================================ - >>> print(hp.fast_bins(arena_index=1)) # doctest: +SKIP + >>> print(hp.fast_bins(arena_index=1)) ================================== Fast Bins ================================== [-] No chunks found ================================================================================ From d8b65e800106e4b3dcc0cce8e927b4fc37511669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 17:01:39 +0100 Subject: [PATCH 142/179] set heap_explorer parsers as properties --- pwnlib/heap/glmalloc/heap_explorer.py | 89 +++++++++++++++++---------- 1 file changed, 56 insertions(+), 33 deletions(-) diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index 1c2c8afb1..cc4ce9978 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -45,43 +45,15 @@ class HeapExplorer: """ - def __init__(self, pid, libc): - process_informer = ProcessInformer(pid, libc) - self._process_informer = process_informer - self._main_arena_address = process_informer.main_arena_address - self._pointer_size = process_informer.pointer_size + def __init__(self, pid, libc, use_tcache=None): + self._process_informer = ProcessInformer(pid, libc) - self._malloc_state_parser = MallocStateParser(process_informer) - - malloc_chunk_parser = MallocChunkParser(process_informer) - - self._heap_parser = HeapParser( - malloc_chunk_parser, - self._malloc_state_parser - ) - - self._bin_parser = BinParser(malloc_chunk_parser) - self._fast_bin_parser = FastBinParser(malloc_chunk_parser) + if use_tcache is None: + use_tcache = self._are_tcaches_enabled() #: :class:`bool`: Indicates if tcaches are enabled for the current #: glibc version. - self.tcaches_enabled = self._are_tcaches_enabled() - - if self.tcaches_enabled: - self._tcache_parser = EnabledTcacheParser( - malloc_chunk_parser, - self._heap_parser - ) - else: - self._tcache_parser = DisabledTcacheParser() - - self._arena_parser = ArenaParser( - self._malloc_state_parser, - self._heap_parser, - self._bin_parser, - self._fast_bin_parser, - self._tcache_parser - ) + self.tcaches_enabled = use_tcache def _are_tcaches_enabled(self): if self._process_informer.is_libc_version_lower_than((2, 26)): @@ -661,3 +633,54 @@ def all_arenas(self): return self._arena_parser.parse_all_from_main_malloc_state_address( self._main_arena_address ) + + @property + def _main_arena_address(self): + return self._process_informer.main_arena_address + + @property + def _pointer_size(self): + return self._process_informer.pointer_size + + @property + def _malloc_state_parser(self): + return MallocStateParser(self._process_informer) + + @property + def _malloc_chunk_parser(self): + return MallocChunkParser(self._process_informer) + + @property + def _heap_parser(self): + return HeapParser( + self._malloc_chunk_parser, + self._malloc_state_parser + ) + + @property + def _bin_parser(self): + return BinParser(self._malloc_chunk_parser) + + @property + def _fast_bin_parser(self): + return FastBinParser(self._malloc_chunk_parser) + + @property + def _tcache_parser(self): + if self.tcaches_enabled: + return EnabledTcacheParser( + self._malloc_chunk_parser, + self._heap_parser + ) + else: + return DisabledTcacheParser() + + @property + def _arena_parser(self): + return ArenaParser( + self._malloc_state_parser, + self._heap_parser, + self._bin_parser, + self._fast_bin_parser, + self._tcache_parser + ) \ No newline at end of file From 8ee042ea49bac939539fec0b406f497fadfbccca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 17:25:26 +0100 Subject: [PATCH 143/179] create HeapError --- pwnlib/heap/__init__.py | 4 ++-- pwnlib/heap/glmalloc/__init__.py | 4 ++-- pwnlib/heap/glmalloc/heap/__init__.py | 3 ++- pwnlib/heap/glmalloc/heap/error.py | 7 +++++++ pwnlib/heap/glmalloc/heap/heap_parser.py | 14 +++++++++++++- 5 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 pwnlib/heap/glmalloc/heap/error.py diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 52f484195..ac2c2f67c 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -8,7 +8,7 @@ from pwnlib.heap.glmalloc.arena import Arena from pwnlib.heap.glmalloc.malloc_chunk import MallocChunk from pwnlib.heap.glmalloc.malloc_state import MallocState -from pwnlib.heap.glmalloc.heap import Heap +from pwnlib.heap.glmalloc.heap import Heap, HeapError from pwnlib.heap.glmalloc.bins import \ Tcaches, \ Tcache, \ @@ -32,7 +32,7 @@ 'Arena', 'MallocChunk', 'MallocState', - 'Heap', + 'Heap', 'HeapError', 'Tcaches', 'Tcache', 'TcacheEntry', 'NoTcacheError', 'FastBins', 'FastBin', 'FastBinEntry', 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py index 34c951e73..02adaba56 100644 --- a/pwnlib/heap/glmalloc/__init__.py +++ b/pwnlib/heap/glmalloc/__init__.py @@ -336,7 +336,7 @@ from pwnlib.heap.glmalloc.arena import Arena from pwnlib.heap.glmalloc.malloc_chunk import MallocChunk from pwnlib.heap.glmalloc.malloc_state import MallocState -from pwnlib.heap.glmalloc.heap import Heap +from pwnlib.heap.glmalloc.heap import Heap, HeapError from pwnlib.heap.glmalloc.bins import \ Bins, \ Bin, \ @@ -363,7 +363,7 @@ 'Arena', 'MallocChunk', 'MallocState', - 'Heap', + 'Heap', 'HeapError', 'Tcaches', 'Tcache', 'TcacheEntry', 'NoTcacheError', 'FastBins', 'FastBin', 'FastBinEntry', 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', diff --git a/pwnlib/heap/glmalloc/heap/__init__.py b/pwnlib/heap/glmalloc/heap/__init__.py index 674a0e8d7..c8b5c4bfa 100644 --- a/pwnlib/heap/glmalloc/heap/__init__.py +++ b/pwnlib/heap/glmalloc/heap/__init__.py @@ -1,7 +1,8 @@ from .heap import Heap from .heap_parser import HeapParser +from .error import HeapError __all__ = [ - 'Heap', 'HeapParser' + 'Heap', 'HeapParser', 'HeapError' ] diff --git a/pwnlib/heap/glmalloc/heap/error.py b/pwnlib/heap/glmalloc/heap/error.py new file mode 100644 index 000000000..99276e06e --- /dev/null +++ b/pwnlib/heap/glmalloc/heap/error.py @@ -0,0 +1,7 @@ + +class HeapError(Exception): + """Exception raised when there are problems with the heap. + """ + + def __init__(self, message): + super(HeapError, self).__init__(message) diff --git a/pwnlib/heap/glmalloc/heap/heap_parser.py b/pwnlib/heap/glmalloc/heap/heap_parser.py index 246c2a151..a3e253f91 100644 --- a/pwnlib/heap/glmalloc/heap/heap_parser.py +++ b/pwnlib/heap/glmalloc/heap/heap_parser.py @@ -1,6 +1,7 @@ from pwnlib.heap.glmalloc.utils import align_address from pwnlib.heap.glmalloc.heap.heap import Heap from pwnlib.heap.glmalloc.heap.heap_info import HeapInfoParser +from .error import HeapError class HeapParser: @@ -43,11 +44,22 @@ def calculate_heap_address_and_size_from_malloc_state(self, malloc_state): Args: malloc_state (MallocState) + Raises: + HeapError: When the malloc state indicates no heap + Returns: tuple(int, int) """ + maps = self._process_informer.maps() - current_heap_map = maps.map_with_address(malloc_state.top) + try: + current_heap_map = maps.map_with_address(malloc_state.top) + except IndexError: + if malloc_state.top == 0x0: + raise HeapError("No heap available") + else: + raise HeapError("No heap in address {}".format(malloc_state.top)) + main_heap_map = maps.heap is_main_heap = current_heap_map.address == main_heap_map.address From cb0567138a3362da1ab58703194c8943737d6721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 17:33:13 +0100 Subject: [PATCH 144/179] fix error loading heap_explorer without [heap] map --- pwnlib/heap/glmalloc/heap_explorer.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index cc4ce9978..f74ca2963 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -6,7 +6,7 @@ NoTcacheError from pwnlib.heap.glmalloc.arena import ArenaParser from pwnlib.heap.glmalloc.malloc_state import MallocStateParser -from pwnlib.heap.glmalloc.heap import HeapParser +from pwnlib.heap.glmalloc.heap import HeapParser, HeapError from pwnlib.heap.glmalloc.malloc_chunk import MallocChunkParser from pwnlib.heap.glmalloc.process_informer import ProcessInformer @@ -59,8 +59,15 @@ def _are_tcaches_enabled(self): if self._process_informer.is_libc_version_lower_than((2, 26)): return False - tcache_chunk_size = self._pointer_size * 64 + 0x50 - return tcache_chunk_size == self.heap().chunks[0].size + try: + # check if the first block of + # the heap that contains the tcache_per_thread_struct + tcache_chunk_size = self._pointer_size * 64 + 0x50 + return tcache_chunk_size == self.heap().chunks[0].size + except HeapError: + # if there is no heap loaded yet return true since version is 2.26 + # or higher so probably there are tcaches + return True def arenas_count(self): """Returns the number of arenas From 81fcb68c9b30e8b0ed3a0d1b94865f7312d461c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 17:36:54 +0100 Subject: [PATCH 145/179] add HeapError to documentation --- docs/source/heap/glmalloc/heap.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/source/heap/glmalloc/heap.rst b/docs/source/heap/glmalloc/heap.rst index f5dba1c85..b504b8167 100644 --- a/docs/source/heap/glmalloc/heap.rst +++ b/docs/source/heap/glmalloc/heap.rst @@ -9,3 +9,8 @@ Heap ------ .. autoclass:: pwnlib.heap.glmalloc.Heap() :members: + +HeapError +----------- +.. autoclass:: pwnlib.heap.glmalloc.HeapError() + :members: \ No newline at end of file From c76ba7eca4b81a3e9f24a328faf5aa328018b8b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 18:51:27 +0100 Subject: [PATCH 146/179] add tcache parameter to process.heap_explorer --- pwnlib/tubes/process.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 67b425304..b88e233e0 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -976,12 +976,13 @@ def _waitfor_libc(self, timeout=1): ) ) - def heap_explorer(self, timeout=1): + def heap_explorer(self, timeout=1, tcache=None): """Returns a heap explorer that allows to inspect the items of the libc heap. Arguments: timeout(int): Time to wait for libc to being loaded + use_tcache(bool): Indicate if tcache is present Raises: PwnlibException: In case the libc is not found in the given timeout @@ -1003,7 +1004,7 @@ def heap_explorer(self, timeout=1): Returns: HeapExplorer """ - return HeapExplorer(self.pid, self._waitfor_libc(timeout=timeout)) + return HeapExplorer(self.pid, self._waitfor_libc(timeout=timeout), use_tcache=tcache) @property def elf(self): From 2d73b937293965b76b0d6d14b36af4265d9196c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 19:12:32 +0100 Subject: [PATCH 147/179] add safe-link demangling in tcaches --- pwnlib/heap/glmalloc/bins/tcache/parser.py | 9 ++++++++- pwnlib/heap/glmalloc/heap_explorer.py | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/glmalloc/bins/tcache/parser.py b/pwnlib/heap/glmalloc/bins/tcache/parser.py index 21cf821b1..12167aae8 100644 --- a/pwnlib/heap/glmalloc/bins/tcache/parser.py +++ b/pwnlib/heap/glmalloc/bins/tcache/parser.py @@ -28,9 +28,10 @@ class EnabledTcacheParser: malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the heap. heap_parser (HeapParser): a parser of the heap metadata and chunks. + demangle (bool): If demangle the fd pointer to bypass safe-link. """ - def __init__(self, malloc_chunk_parser, heap_parser): + def __init__(self, malloc_chunk_parser, heap_parser, demangle=False): self._process_informer = malloc_chunk_parser.process_informer self._pointer_size = malloc_chunk_parser.pointer_size self._malloc_chunk_parser = malloc_chunk_parser @@ -39,6 +40,8 @@ def __init__(self, malloc_chunk_parser, heap_parser): ) self._heap_parser = heap_parser + self._demangle = demangle + def are_tcache_enabled(self): return True @@ -81,6 +84,10 @@ def _parse_from_tcache_entry(self, entry): ) chunks.append(chunk) pointer = chunk.fd + + if self._demangle: + pointer = chunk.data_address >> 12 ^ pointer + except (OSError, IOError): # to avoid hanging in case some pointer is corrupted break diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index f74ca2963..def0c8665 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -45,7 +45,7 @@ class HeapExplorer: """ - def __init__(self, pid, libc, use_tcache=None): + def __init__(self, pid, libc, use_tcache=None, demangle=None): self._process_informer = ProcessInformer(pid, libc) if use_tcache is None: @@ -55,6 +55,17 @@ def __init__(self, pid, libc, use_tcache=None): #: glibc version. self.tcaches_enabled = use_tcache + if demangle is None: + demangle = self._should_demangle() + + #: :class:`bool`: Indicates if tcaches and fastbin pointers should + # be demangled to bypass safe-link protection + self.demangle = demangle + + def _should_demangle(self): + # safe-link protection is included in version 2.32 + return self._process_informer.is_libc_version_higher_than((2, 31)) + def _are_tcaches_enabled(self): if self._process_informer.is_libc_version_lower_than((2, 26)): return False @@ -677,7 +688,8 @@ def _tcache_parser(self): if self.tcaches_enabled: return EnabledTcacheParser( self._malloc_chunk_parser, - self._heap_parser + self._heap_parser, + demangle=self.demangle, ) else: return DisabledTcacheParser() From 5fa91d14184e47048fdf699f4c6d5bef17413afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Mon, 15 Mar 2021 19:14:41 +0100 Subject: [PATCH 148/179] add demangle and tcaches parameters to process --- pwnlib/tubes/process.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index b88e233e0..d29182fc1 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -976,13 +976,15 @@ def _waitfor_libc(self, timeout=1): ) ) - def heap_explorer(self, timeout=1, tcache=None): + def heap_explorer(self, timeout=1, tcache=None, demangle=None): """Returns a heap explorer that allows to inspect the items of the libc heap. Arguments: timeout(int): Time to wait for libc to being loaded - use_tcache(bool): Indicate if tcache is present + tcache(bool): Indicate if tcache is present + demangle (bool): If demangle the tcache and fast-bins pointers to bypass + safe-link. Raises: PwnlibException: In case the libc is not found in the given timeout @@ -1004,7 +1006,12 @@ def heap_explorer(self, timeout=1, tcache=None): Returns: HeapExplorer """ - return HeapExplorer(self.pid, self._waitfor_libc(timeout=timeout), use_tcache=tcache) + return HeapExplorer( + self.pid, + self._waitfor_libc(timeout=timeout), + use_tcache=tcache, + demangle=demangle + ) @property def elf(self): From 47e23583aaae747e6e602c4f4425d525b3acb55a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Tue, 16 Mar 2021 09:57:40 +0100 Subject: [PATCH 149/179] add safe-link demangle to fast bins --- pwnlib/heap/glmalloc/bins/fast_bin.py | 10 ++++++++-- pwnlib/heap/glmalloc/heap_explorer.py | 5 ++++- pwnlib/heap/glmalloc/malloc_chunk.py | 6 ++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/glmalloc/bins/fast_bin.py b/pwnlib/heap/glmalloc/bins/fast_bin.py index 35f67b1f3..4598cce56 100644 --- a/pwnlib/heap/glmalloc/bins/fast_bin.py +++ b/pwnlib/heap/glmalloc/bins/fast_bin.py @@ -8,10 +8,12 @@ class FastBinParser: Args: malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the heap. + demangle (bool): If demangle the fd pointer to bypass safe-link. """ - def __init__(self, malloc_chunk_parser): + def __init__(self, malloc_chunk_parser, demangle=False): self._malloc_chunk_parser = malloc_chunk_parser + self._demangle = demangle def parse_all_from_malloc_state(self, malloc_state): """Returns the fast bins of the arena based on the malloc state @@ -40,7 +42,11 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): current_address ) chunks.append(chunk) - current_address = chunk.fd + + if self._demangle: + current_address = chunk.fd_demangled + else: + current_address = chunk.fd except (OSError, IOError): # to avoid hanging in case some pointer is corrupted break diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index def0c8665..b22876cfe 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -681,7 +681,10 @@ def _bin_parser(self): @property def _fast_bin_parser(self): - return FastBinParser(self._malloc_chunk_parser) + return FastBinParser( + self._malloc_chunk_parser, + demangle=self.demangle + ) @property def _tcache_parser(self): diff --git a/pwnlib/heap/glmalloc/malloc_chunk.py b/pwnlib/heap/glmalloc/malloc_chunk.py index 2065f8d93..a07b89161 100644 --- a/pwnlib/heap/glmalloc/malloc_chunk.py +++ b/pwnlib/heap/glmalloc/malloc_chunk.py @@ -157,6 +157,12 @@ def __init__(self, address, previous_size, size, prev_in_use, mmapped, else: self._pack_pointer = p32 + @property + def fd_demangled(self): + """:class:`int`: The fd pointer demangled to return the original + value when safe-linking is used.""" + return self.data_address >> 12 ^ self.fd + def __str__(self): string = "" string += "previous_size = {:#x}\n".format(self.previous_size) From 52ee590c3be0746ecfb7d99f41587bfaf6ae170b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Tue, 16 Mar 2021 10:09:07 +0100 Subject: [PATCH 150/179] use fd_demangled in tcache parser --- pwnlib/heap/glmalloc/bins/tcache/parser.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/glmalloc/bins/tcache/parser.py b/pwnlib/heap/glmalloc/bins/tcache/parser.py index 12167aae8..78645481c 100644 --- a/pwnlib/heap/glmalloc/bins/tcache/parser.py +++ b/pwnlib/heap/glmalloc/bins/tcache/parser.py @@ -83,10 +83,10 @@ def _parse_from_tcache_entry(self, entry): chunk_base_address ) chunks.append(chunk) - pointer = chunk.fd - if self._demangle: - pointer = chunk.data_address >> 12 ^ pointer + pointer = chunk.fd_demangled + else: + pointer = chunk.fd except (OSError, IOError): # to avoid hanging in case some pointer is corrupted From a2895887e20c54ee4b22be333a0236c6634513fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Tue, 16 Mar 2021 10:28:32 +0100 Subject: [PATCH 151/179] simplify tcaches check in heap explorer --- pwnlib/heap/glmalloc/heap_explorer.py | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index b22876cfe..9d3e3c280 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -67,18 +67,8 @@ def _should_demangle(self): return self._process_informer.is_libc_version_higher_than((2, 31)) def _are_tcaches_enabled(self): - if self._process_informer.is_libc_version_lower_than((2, 26)): - return False - - try: - # check if the first block of - # the heap that contains the tcache_per_thread_struct - tcache_chunk_size = self._pointer_size * 64 + 0x50 - return tcache_chunk_size == self.heap().chunks[0].size - except HeapError: - # if there is no heap loaded yet return true since version is 2.26 - # or higher so probably there are tcaches - return True + # tcaches were added in version 2.26 + return self._process_informer.is_libc_version_higher_than((2, 25)) def arenas_count(self): """Returns the number of arenas From efc2dc67d943e688bb74288ca80baa6dc6bed2d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Tue, 16 Mar 2021 10:39:36 +0100 Subject: [PATCH 152/179] print correctly bins with safe-link --- pwnlib/heap/glmalloc/bins/bin.py | 9 +++++++-- pwnlib/heap/glmalloc/bins/fast_bin.py | 6 +++--- pwnlib/heap/glmalloc/bins/tcache/parser.py | 2 +- pwnlib/heap/glmalloc/bins/tcache/tcache.py | 4 ++-- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pwnlib/heap/glmalloc/bins/bin.py b/pwnlib/heap/glmalloc/bins/bin.py index 5e57e02df..a938aa478 100644 --- a/pwnlib/heap/glmalloc/bins/bin.py +++ b/pwnlib/heap/glmalloc/bins/bin.py @@ -72,9 +72,10 @@ class Bin(object): of the bin entry as well as the chunks of the bin. """ - def __init__(self, bin_entry, malloc_chunks): + def __init__(self, bin_entry, malloc_chunks, safe_link=False): self._bin_entry = bin_entry self._malloc_chunks = malloc_chunks + self._safe_link = safe_link @property def bin_entry(self): @@ -131,7 +132,11 @@ def __str__(self): if flags: msg.append(" {}".format(flags)) msg.append(")") - next_address = chunk.fd + + if self._safe_link: + next_address = chunk.fd_demangled + else: + next_address = chunk.fd msg.append(" => {:#x}".format(next_address)) return "".join(msg) diff --git a/pwnlib/heap/glmalloc/bins/fast_bin.py b/pwnlib/heap/glmalloc/bins/fast_bin.py index 4598cce56..ec139c59c 100644 --- a/pwnlib/heap/glmalloc/bins/fast_bin.py +++ b/pwnlib/heap/glmalloc/bins/fast_bin.py @@ -51,7 +51,7 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): # to avoid hanging in case some pointer is corrupted break - return FastBin(fast_bin_entry, chunks) + return FastBin(fast_bin_entry, chunks, safe_link=self._demangle) class FastBins(Bins): @@ -71,8 +71,8 @@ class FastBin(Bin): """Class to represent a fast bin of the glibc. """ - def __init__(self, bin_entry, malloc_chunks): - super(FastBin, self).__init__(bin_entry, malloc_chunks) + def __init__(self, bin_entry, malloc_chunks, safe_link): + super(FastBin, self).__init__(bin_entry, malloc_chunks, safe_link=safe_link) def _name(self): return "Fast Bin" diff --git a/pwnlib/heap/glmalloc/bins/tcache/parser.py b/pwnlib/heap/glmalloc/bins/tcache/parser.py index 78645481c..a54ca0075 100644 --- a/pwnlib/heap/glmalloc/bins/tcache/parser.py +++ b/pwnlib/heap/glmalloc/bins/tcache/parser.py @@ -92,4 +92,4 @@ def _parse_from_tcache_entry(self, entry): # to avoid hanging in case some pointer is corrupted break - return Tcache(entry, chunks) + return Tcache(entry, chunks, safe_link=self._demangle) diff --git a/pwnlib/heap/glmalloc/bins/tcache/tcache.py b/pwnlib/heap/glmalloc/bins/tcache/tcache.py index 62d581ded..d99505bbe 100644 --- a/pwnlib/heap/glmalloc/bins/tcache/tcache.py +++ b/pwnlib/heap/glmalloc/bins/tcache/tcache.py @@ -15,8 +15,8 @@ class Tcache(Bin): """Class to represent a tcache of the glibc """ - def __init__(self, bin_entry, malloc_chunks): - super(Tcache, self).__init__(bin_entry, malloc_chunks) + def __init__(self, bin_entry, malloc_chunks, safe_link): + super(Tcache, self).__init__(bin_entry, malloc_chunks, safe_link=safe_link) @property def bin_entry(self): From 2905261987fc78d4c2794138c9e6c3851845385f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Tue, 16 Mar 2021 10:47:00 +0100 Subject: [PATCH 153/179] change demangle term by safe-link --- pwnlib/heap/glmalloc/bins/fast_bin.py | 10 +++++----- pwnlib/heap/glmalloc/bins/tcache/parser.py | 10 +++++----- pwnlib/heap/glmalloc/heap_explorer.py | 18 +++++++++--------- pwnlib/tubes/process.py | 8 ++++---- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/pwnlib/heap/glmalloc/bins/fast_bin.py b/pwnlib/heap/glmalloc/bins/fast_bin.py index ec139c59c..3e3b7e1a0 100644 --- a/pwnlib/heap/glmalloc/bins/fast_bin.py +++ b/pwnlib/heap/glmalloc/bins/fast_bin.py @@ -8,12 +8,12 @@ class FastBinParser: Args: malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the heap. - demangle (bool): If demangle the fd pointer to bypass safe-link. + safe_link (bool): If fd pointer is protected by safe-link. """ - def __init__(self, malloc_chunk_parser, demangle=False): + def __init__(self, malloc_chunk_parser, safe_link=False): self._malloc_chunk_parser = malloc_chunk_parser - self._demangle = demangle + self._safe_link = safe_link def parse_all_from_malloc_state(self, malloc_state): """Returns the fast bins of the arena based on the malloc state @@ -43,7 +43,7 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): ) chunks.append(chunk) - if self._demangle: + if self._safe_link: current_address = chunk.fd_demangled else: current_address = chunk.fd @@ -51,7 +51,7 @@ def _parse_from_fast_bin_entry(self, fast_bin_entry): # to avoid hanging in case some pointer is corrupted break - return FastBin(fast_bin_entry, chunks, safe_link=self._demangle) + return FastBin(fast_bin_entry, chunks, safe_link=self._safe_link) class FastBins(Bins): diff --git a/pwnlib/heap/glmalloc/bins/tcache/parser.py b/pwnlib/heap/glmalloc/bins/tcache/parser.py index a54ca0075..5cc02af7e 100644 --- a/pwnlib/heap/glmalloc/bins/tcache/parser.py +++ b/pwnlib/heap/glmalloc/bins/tcache/parser.py @@ -28,10 +28,10 @@ class EnabledTcacheParser: malloc_chunk_parser (MallocChunkParser): a parser of the chunks in the heap. heap_parser (HeapParser): a parser of the heap metadata and chunks. - demangle (bool): If demangle the fd pointer to bypass safe-link. + safe_link (bool): If fd pointer is protected by safe-link. """ - def __init__(self, malloc_chunk_parser, heap_parser, demangle=False): + def __init__(self, malloc_chunk_parser, heap_parser, safe_link=False): self._process_informer = malloc_chunk_parser.process_informer self._pointer_size = malloc_chunk_parser.pointer_size self._malloc_chunk_parser = malloc_chunk_parser @@ -40,7 +40,7 @@ def __init__(self, malloc_chunk_parser, heap_parser, demangle=False): ) self._heap_parser = heap_parser - self._demangle = demangle + self._safe_link = safe_link def are_tcache_enabled(self): return True @@ -83,7 +83,7 @@ def _parse_from_tcache_entry(self, entry): chunk_base_address ) chunks.append(chunk) - if self._demangle: + if self._safe_link: pointer = chunk.fd_demangled else: pointer = chunk.fd @@ -92,4 +92,4 @@ def _parse_from_tcache_entry(self, entry): # to avoid hanging in case some pointer is corrupted break - return Tcache(entry, chunks, safe_link=self._demangle) + return Tcache(entry, chunks, safe_link=self._safe_link) diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index 9d3e3c280..1c2c4b55d 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -45,7 +45,7 @@ class HeapExplorer: """ - def __init__(self, pid, libc, use_tcache=None, demangle=None): + def __init__(self, pid, libc, use_tcache=None, safe_link=None): self._process_informer = ProcessInformer(pid, libc) if use_tcache is None: @@ -55,14 +55,14 @@ def __init__(self, pid, libc, use_tcache=None, demangle=None): #: glibc version. self.tcaches_enabled = use_tcache - if demangle is None: - demangle = self._should_demangle() + if safe_link is None: + safe_link = self._is_safe_link_enabled() - #: :class:`bool`: Indicates if tcaches and fastbin pointers should - # be demangled to bypass safe-link protection - self.demangle = demangle + #: :class:`bool`: Indicates if tcaches and fastbin are protected + # by safe-link + self.safe_link = safe_link - def _should_demangle(self): + def _is_safe_link_enabled(self): # safe-link protection is included in version 2.32 return self._process_informer.is_libc_version_higher_than((2, 31)) @@ -673,7 +673,7 @@ def _bin_parser(self): def _fast_bin_parser(self): return FastBinParser( self._malloc_chunk_parser, - demangle=self.demangle + safe_link=self.safe_link ) @property @@ -682,7 +682,7 @@ def _tcache_parser(self): return EnabledTcacheParser( self._malloc_chunk_parser, self._heap_parser, - demangle=self.demangle, + safe_link=self.safe_link, ) else: return DisabledTcacheParser() diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index d29182fc1..e8f67754c 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -976,15 +976,15 @@ def _waitfor_libc(self, timeout=1): ) ) - def heap_explorer(self, timeout=1, tcache=None, demangle=None): + def heap_explorer(self, timeout=1, tcache=None, safe_link=None): """Returns a heap explorer that allows to inspect the items of the libc heap. Arguments: timeout(int): Time to wait for libc to being loaded tcache(bool): Indicate if tcache is present - demangle (bool): If demangle the tcache and fast-bins pointers to bypass - safe-link. + safe_link (bool): Indicate if safe-link is present in tcaches and + fastbisn pointers Raises: PwnlibException: In case the libc is not found in the given timeout @@ -1010,7 +1010,7 @@ def heap_explorer(self, timeout=1, tcache=None, demangle=None): self.pid, self._waitfor_libc(timeout=timeout), use_tcache=tcache, - demangle=demangle + safe_link=safe_link ) @property From 689f56e11f5fbdf05268aa3053a3d9a4ab8b0fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 20 Mar 2021 18:07:41 +0100 Subject: [PATCH 154/179] use packing in malloc chunk --- pwnlib/heap/glmalloc/malloc_chunk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pwnlib/heap/glmalloc/malloc_chunk.py b/pwnlib/heap/glmalloc/malloc_chunk.py index a07b89161..d1fe72b98 100644 --- a/pwnlib/heap/glmalloc/malloc_chunk.py +++ b/pwnlib/heap/glmalloc/malloc_chunk.py @@ -1,4 +1,4 @@ -from pwnlib.heap.glmalloc.utils import p32, p64 +from pwnlib.util.packing import p32, p64 class MallocChunkParser: From edeca4f0be3248e3d3db893ecf0c94c3a7542843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 20 Mar 2021 18:39:00 +0100 Subject: [PATCH 155/179] use Timeout in _waitfor_libc --- pwnlib/tubes/process.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index e8f67754c..aa8f6c0c1 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -960,21 +960,20 @@ def _waitfor_libc(self, timeout=1): ELF """ - limit = time.time() + timeout - while True: - libc = self._libc() - if libc is not None: - return libc + t = Timeout() + with t.countdown(timeout): + while t.timeout: + libc = self._libc() + if libc is not None: + return libc - if time.time() < limit: time.sleep(0.01) - continue - else: - self.error( - "Unable to find the libc library in process {}".format( - self.executable - ) - ) + + self.error( + "Unable to find the libc library in process {}".format( + self.executable + ) + ) def heap_explorer(self, timeout=1, tcache=None, safe_link=None): """Returns a heap explorer that allows to inspect the items of the libc From 36b90b69361547a448f0b83c36569d11877beac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 20 Mar 2021 19:02:35 +0100 Subject: [PATCH 156/179] format import in arena.py --- pwnlib/heap/glmalloc/arena/arena.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pwnlib/heap/glmalloc/arena/arena.py b/pwnlib/heap/glmalloc/arena/arena.py index a61a31fcf..7ba1b1ea1 100644 --- a/pwnlib/heap/glmalloc/arena/arena.py +++ b/pwnlib/heap/glmalloc/arena/arena.py @@ -1,7 +1,7 @@ from pwnlib.heap.glmalloc.bins import NoTcacheError -from pwnlib.heap.glmalloc.malloc_state import \ - SMALL_BINS_START_INDEX, \ - LARGE_BINS_START_INDEX +from pwnlib.heap.glmalloc.malloc_state import ( + SMALL_BINS_START_INDEX, LARGE_BINS_START_INDEX +) from pwnlib.heap.glmalloc.basic_formatter import BasicFormatter From f965dc67b59a1824fb963172f4d6a612e6952d82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 20 Mar 2021 19:14:50 +0100 Subject: [PATCH 157/179] remove packing functions from glmalloc/utils --- pwnlib/heap/glmalloc/malloc_state/fastbinsy.py | 2 +- pwnlib/heap/glmalloc/process_informer.py | 9 ++++----- pwnlib/heap/glmalloc/utils.py | 17 ----------------- 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/pwnlib/heap/glmalloc/malloc_state/fastbinsy.py b/pwnlib/heap/glmalloc/malloc_state/fastbinsy.py index 0100b2467..807255787 100644 --- a/pwnlib/heap/glmalloc/malloc_state/fastbinsy.py +++ b/pwnlib/heap/glmalloc/malloc_state/fastbinsy.py @@ -1,4 +1,4 @@ -from pwnlib.heap.glmalloc.utils import u64, u32 +from pwnlib.util.packing import u64, u32 from pwnlib.heap.glmalloc.bins import FastBinEntry diff --git a/pwnlib/heap/glmalloc/process_informer.py b/pwnlib/heap/glmalloc/process_informer.py index a53c48079..2add7100c 100644 --- a/pwnlib/heap/glmalloc/process_informer.py +++ b/pwnlib/heap/glmalloc/process_informer.py @@ -1,10 +1,9 @@ import os.path import pwnlib.util.proc -from pwnlib.heap.glmalloc.utils import \ - u64, \ - u32, \ - get_libc_version_from_name, \ - get_main_arena_addr +from pwnlib.heap.glmalloc.utils import ( + get_libc_version_from_name, get_main_arena_addr +) +from pwnlib.util.packing import u32, u64 class ProcessInformer: diff --git a/pwnlib/heap/glmalloc/utils.py b/pwnlib/heap/glmalloc/utils.py index 5d71986e6..2b51fa793 100644 --- a/pwnlib/heap/glmalloc/utils.py +++ b/pwnlib/heap/glmalloc/utils.py @@ -1,21 +1,4 @@ import re -from pwnlib.util import packing - - -def u32(bytes_): - return packing.u32(bytes_) - - -def u64(bytes_): - return packing.u64(bytes_) - - -def p32(number): - return packing.p32(number) - - -def p64(number): - return packing.p64(number) def align_address(address, align): From b3b5a48a2cce3fdb11a6363c0c94a6dc82e90520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sun, 6 Jun 2021 11:57:54 +0200 Subject: [PATCH 158/179] pass ProcessInformer as argument to HeapExplorer --- pwnlib/heap/__init__.py | 4 +++- pwnlib/heap/glmalloc/__init__.py | 2 ++ pwnlib/heap/glmalloc/heap_explorer.py | 4 ++-- pwnlib/tubes/process.py | 7 ++++--- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index ac2c2f67c..1882e2852 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -26,6 +26,7 @@ LargeBins, \ LargeBin, \ LargeBinEntry +from pwnlib.heap.glmalloc.process_informer import ProcessInformer __all__ = [ 'HeapExplorer', @@ -37,5 +38,6 @@ 'FastBins', 'FastBin', 'FastBinEntry', 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', 'SmallBins', 'SmallBin', 'SmallBinEntry', - 'LargeBins', 'LargeBin', 'LargeBinEntry' + 'LargeBins', 'LargeBin', 'LargeBinEntry', + 'ProcessInformer' ] diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py index 02adaba56..2cfe6e0be 100644 --- a/pwnlib/heap/glmalloc/__init__.py +++ b/pwnlib/heap/glmalloc/__init__.py @@ -357,6 +357,7 @@ LargeBins, \ LargeBin, \ LargeBinEntry +from pwnlib.heap.glmalloc.process_informer import ProcessInformer __all__ = [ 'HeapExplorer', @@ -370,4 +371,5 @@ 'SmallBins', 'SmallBin', 'SmallBinEntry', 'LargeBins', 'LargeBin', 'LargeBinEntry', 'Bins', 'Bin', 'BinEntry', + 'ProcessInformer' ] diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index 1c2c4b55d..93b37e17b 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -45,8 +45,8 @@ class HeapExplorer: """ - def __init__(self, pid, libc, use_tcache=None, safe_link=None): - self._process_informer = ProcessInformer(pid, libc) + def __init__(self, process_informer, use_tcache=None, safe_link=None): + self._process_informer = process_informer if use_tcache is None: use_tcache = self._are_tcaches_enabled() diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index aa8f6c0c1..a51629c66 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -30,6 +30,7 @@ from pwnlib.exception import PwnlibException from pwnlib.heap import HeapExplorer +from pwnlib.heap import ProcessInformer log = getLogger(__name__) @@ -1005,11 +1006,11 @@ def heap_explorer(self, timeout=1, tcache=None, safe_link=None): Returns: HeapExplorer """ + process_informer = ProcessInformer(self.pid, self._waitfor_libc(timeout=timeout)) return HeapExplorer( - self.pid, - self._waitfor_libc(timeout=timeout), + process_informer, use_tcache=tcache, - safe_link=safe_link + safe_link=safe_link, ) @property From a33e2760af9f9b3caad0ffab9f08c6501672741a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sun, 6 Jun 2021 12:20:51 +0200 Subject: [PATCH 159/179] remove pid from MallocChunk --- pwnlib/heap/glmalloc/malloc_chunk.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pwnlib/heap/glmalloc/malloc_chunk.py b/pwnlib/heap/glmalloc/malloc_chunk.py index d1fe72b98..ddcd147b6 100644 --- a/pwnlib/heap/glmalloc/malloc_chunk.py +++ b/pwnlib/heap/glmalloc/malloc_chunk.py @@ -6,7 +6,6 @@ class MallocChunkParser: data. Attributes: - pid (int): Target process pid pointer_size (int): Size of pointers in target process unpack_pointer (func(bytes)): Function to get an int from the pointer bytes @@ -18,7 +17,6 @@ class MallocChunkParser: def __init__(self, process_informer): self.process_informer = process_informer - self.pid = process_informer.pid self.pointer_size = process_informer.pointer_size self.unpack_pointer = process_informer.unpack_pointer From 9b9ce85e8a97764ec5772b8fa32a427c1ff9aff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 12 Jun 2021 10:20:49 +0200 Subject: [PATCH 160/179] Created CoreFileInformer --- pwnlib/heap/__init__.py | 4 +- pwnlib/heap/glmalloc/__init__.py | 4 +- pwnlib/heap/glmalloc/heap/heap_parser.py | 5 +-- pwnlib/heap/glmalloc/heap_explorer.py | 1 - pwnlib/heap/glmalloc/process_informer.py | 49 ++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 8 deletions(-) diff --git a/pwnlib/heap/__init__.py b/pwnlib/heap/__init__.py index 1882e2852..92e2770ad 100644 --- a/pwnlib/heap/__init__.py +++ b/pwnlib/heap/__init__.py @@ -26,7 +26,7 @@ LargeBins, \ LargeBin, \ LargeBinEntry -from pwnlib.heap.glmalloc.process_informer import ProcessInformer +from pwnlib.heap.glmalloc.process_informer import ProcessInformer, CoreFileInformer __all__ = [ 'HeapExplorer', @@ -39,5 +39,5 @@ 'UnsortedBins', 'UnsortedBin', 'UnsortedBinEntry', 'SmallBins', 'SmallBin', 'SmallBinEntry', 'LargeBins', 'LargeBin', 'LargeBinEntry', - 'ProcessInformer' + 'ProcessInformer', 'CoreFileInformer' ] diff --git a/pwnlib/heap/glmalloc/__init__.py b/pwnlib/heap/glmalloc/__init__.py index 2cfe6e0be..c58e275e3 100644 --- a/pwnlib/heap/glmalloc/__init__.py +++ b/pwnlib/heap/glmalloc/__init__.py @@ -357,7 +357,7 @@ LargeBins, \ LargeBin, \ LargeBinEntry -from pwnlib.heap.glmalloc.process_informer import ProcessInformer +from pwnlib.heap.glmalloc.process_informer import ProcessInformer, CoreFileInformer __all__ = [ 'HeapExplorer', @@ -371,5 +371,5 @@ 'SmallBins', 'SmallBin', 'SmallBinEntry', 'LargeBins', 'LargeBin', 'LargeBinEntry', 'Bins', 'Bin', 'BinEntry', - 'ProcessInformer' + 'ProcessInformer', 'CoreFileInformer' ] diff --git a/pwnlib/heap/glmalloc/heap/heap_parser.py b/pwnlib/heap/glmalloc/heap/heap_parser.py index a3e253f91..1ea3b80b0 100644 --- a/pwnlib/heap/glmalloc/heap/heap_parser.py +++ b/pwnlib/heap/glmalloc/heap/heap_parser.py @@ -51,16 +51,15 @@ def calculate_heap_address_and_size_from_malloc_state(self, malloc_state): tuple(int, int) """ - maps = self._process_informer.maps() try: - current_heap_map = maps.map_with_address(malloc_state.top) + current_heap_map = self._process_informer.map_with_address(malloc_state.top) except IndexError: if malloc_state.top == 0x0: raise HeapError("No heap available") else: raise HeapError("No heap in address {}".format(malloc_state.top)) - main_heap_map = maps.heap + main_heap_map = self._process_informer.heap() is_main_heap = current_heap_map.address == main_heap_map.address if is_main_heap: diff --git a/pwnlib/heap/glmalloc/heap_explorer.py b/pwnlib/heap/glmalloc/heap_explorer.py index 93b37e17b..d7bb16b86 100644 --- a/pwnlib/heap/glmalloc/heap_explorer.py +++ b/pwnlib/heap/glmalloc/heap_explorer.py @@ -8,7 +8,6 @@ from pwnlib.heap.glmalloc.malloc_state import MallocStateParser from pwnlib.heap.glmalloc.heap import HeapParser, HeapError from pwnlib.heap.glmalloc.malloc_chunk import MallocChunkParser -from pwnlib.heap.glmalloc.process_informer import ProcessInformer class HeapExplorer: diff --git a/pwnlib/heap/glmalloc/process_informer.py b/pwnlib/heap/glmalloc/process_informer.py index 2add7100c..20b7450ce 100644 --- a/pwnlib/heap/glmalloc/process_informer.py +++ b/pwnlib/heap/glmalloc/process_informer.py @@ -48,3 +48,52 @@ def is_libc_version_higher_than(self, version): def is_libc_version_lower_than(self, version): return self.libc_version < version + + +class CoreFileInformer: + """Helper class with information about corefile such as pointer_size, + and which allows perform operations over memory. + + Attributes: + libc_version (tuple(int, int)): The glibc version in + format (major, minor) + pid (int): pid of the process + pointer_size (int): size in bytes of a pointer in the process + main_arena_address (int): address of the main arena malloc state + + """ + + def __init__(self, corefile, libc): + libc_name = os.path.basename(libc.path) + self.libc_version = get_libc_version_from_name(libc_name) + self.corefile = corefile + + if "64" in self.corefile.get_machine_arch(): + self.pointer_size = 8 + self.unpack_pointer = u64 + else: + self.pointer_size = 4 + self.unpack_pointer = u32 + + self.unpack_int = u32 + + self.main_arena_address = get_main_arena_addr(libc, self.pointer_size) + + def read_memory(self, address, size): + return self.corefile.read(address, size) + + def maps(self): + return pwnlib.util.proc.MemoryMaps.from_str(str(self.corefile.mappings)) + + def map_with_address(self, addr): + for mapping in self.corefile.mappings: + if mapping.start <= addr < mapping.stop: + return mapping + + raise IndexError("address {:#x} out of range".format(addr)) + + def is_libc_version_higher_than(self, version): + return self.libc_version > version + + def is_libc_version_lower_than(self, version): + return self.libc_version < version From aec1d10182cde0cf2ae9ccd5075e43b695a06d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 12 Jun 2021 10:32:44 +0200 Subject: [PATCH 161/179] get correct main heap from corefile in heap parser --- pwnlib/heap/glmalloc/heap/heap_parser.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pwnlib/heap/glmalloc/heap/heap_parser.py b/pwnlib/heap/glmalloc/heap/heap_parser.py index 1ea3b80b0..44a480163 100644 --- a/pwnlib/heap/glmalloc/heap/heap_parser.py +++ b/pwnlib/heap/glmalloc/heap/heap_parser.py @@ -59,9 +59,7 @@ def calculate_heap_address_and_size_from_malloc_state(self, malloc_state): else: raise HeapError("No heap in address {}".format(malloc_state.top)) - main_heap_map = self._process_informer.heap() - - is_main_heap = current_heap_map.address == main_heap_map.address + is_main_heap = malloc_state.address == self._process_informer.main_arena_address if is_main_heap: heap_start_address = current_heap_map.address else: @@ -70,7 +68,7 @@ def calculate_heap_address_and_size_from_malloc_state(self, malloc_state): ) heap_size = current_heap_map.size - \ - (heap_start_address - current_heap_map.start_address) + (heap_start_address - current_heap_map.start) return heap_start_address, heap_size def _calculate_non_main_heap_start_address(self, heap_map_start_address): From d41ff5baedd201ffa9d3b47de166780f4aa18e5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 12 Jun 2021 10:33:16 +0200 Subject: [PATCH 162/179] use corefile instead of process to read heap --- pwnlib/tubes/process.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index a51629c66..512e52c2d 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -30,7 +30,7 @@ from pwnlib.exception import PwnlibException from pwnlib.heap import HeapExplorer -from pwnlib.heap import ProcessInformer +from pwnlib.heap import ProcessInformer, CoreFileInformer log = getLogger(__name__) @@ -1006,9 +1006,9 @@ def heap_explorer(self, timeout=1, tcache=None, safe_link=None): Returns: HeapExplorer """ - process_informer = ProcessInformer(self.pid, self._waitfor_libc(timeout=timeout)) + corefile_informer = CoreFileInformer(self.corefile, self._waitfor_libc(timeout=timeout)) return HeapExplorer( - process_informer, + corefile_informer, use_tcache=tcache, safe_link=safe_link, ) From 79d94df13df9b61b8f636048a55d39888ea86be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 12 Jun 2021 12:30:24 +0200 Subject: [PATCH 163/179] move heap_explorer to Corefile --- pwnlib/elf/corefile.py | 49 ++++++++++++++++++++++++ pwnlib/heap/glmalloc/process_informer.py | 4 +- pwnlib/tubes/process.py | 13 ++----- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/pwnlib/elf/corefile.py b/pwnlib/elf/corefile.py index 6f1667226..a51a66181 100644 --- a/pwnlib/elf/corefile.py +++ b/pwnlib/elf/corefile.py @@ -96,6 +96,8 @@ from pwnlib.util.misc import write from pwnlib.util.packing import pack from pwnlib.util.packing import unpack_many +from pwnlib.heap import HeapExplorer +from pwnlib.heap import CoreFileInformer log = getLogger(__name__) @@ -1132,6 +1134,53 @@ def __getattr__(self, attribute): def _populate_got(*a): pass def _populate_plt(*a): pass + def heap_explorer(self, tcache=None, safe_link=None): + """Returns a heap explorer that allows to inspect the items of the libc + heap. + + Arguments: + tcache(bool): Indicate if tcache is present + safe_link (bool): Indicate if safe-link is present in tcaches and + fastbisn pointers + + Raises: + PwnlibException: In case the libc is not found in the corefile + + Examples: + >>> c = CoreFile('./core') # doctest: +SKIP + >>> hp = c.heap_explorer() # doctest: +SKIP + >>> heap = hp.heap() # doctest: +SKIP + >>> len(heap.chunks) # doctest: +SKIP + 574 + >>> fast_bins = hp.fast_bins() # doctest: +SKIP + >>> print(fast_bins) # doctest: +SKIP + ================================== Fast Bins ================================== + [4] Fast Bin 0x60 (2) => Chunk(0x555635100c20 0x60 PREV_IN_USE) => Chunk(0x55563 + 5100ba0 0x60 PREV_IN_USE) => 0x0 + ================================================================================ + + + Returns: + HeapExplorer + """ + libc_map = self.libc + if libc_map is None: + self.error( + "Unable to find the libc library in corefile {}".format( + self.path + ) + ) + + libc = ELF(libc_map.path, checksec=False) + libc.address = libc_map.address + + corefile_informer = CoreFileInformer(self, libc) + return HeapExplorer( + corefile_informer, + use_tcache=tcache, + safe_link=safe_link, + ) + class Core(Corefile): """Alias for :class:`.Corefile`""" diff --git a/pwnlib/heap/glmalloc/process_informer.py b/pwnlib/heap/glmalloc/process_informer.py index 20b7450ce..8889a2945 100644 --- a/pwnlib/heap/glmalloc/process_informer.py +++ b/pwnlib/heap/glmalloc/process_informer.py @@ -64,8 +64,6 @@ class CoreFileInformer: """ def __init__(self, corefile, libc): - libc_name = os.path.basename(libc.path) - self.libc_version = get_libc_version_from_name(libc_name) self.corefile = corefile if "64" in self.corefile.get_machine_arch(): @@ -77,6 +75,8 @@ def __init__(self, corefile, libc): self.unpack_int = u32 + libc_name = os.path.basename(libc.path) + self.libc_version = get_libc_version_from_name(libc_name) self.main_arena_address = get_main_arena_addr(libc, self.pointer_size) def read_memory(self, address, size): diff --git a/pwnlib/tubes/process.py b/pwnlib/tubes/process.py index 512e52c2d..08575d879 100644 --- a/pwnlib/tubes/process.py +++ b/pwnlib/tubes/process.py @@ -29,9 +29,6 @@ import pwnlib.util.proc from pwnlib.exception import PwnlibException -from pwnlib.heap import HeapExplorer -from pwnlib.heap import ProcessInformer, CoreFileInformer - log = getLogger(__name__) class PTY(object): pass @@ -1006,12 +1003,10 @@ def heap_explorer(self, timeout=1, tcache=None, safe_link=None): Returns: HeapExplorer """ - corefile_informer = CoreFileInformer(self.corefile, self._waitfor_libc(timeout=timeout)) - return HeapExplorer( - corefile_informer, - use_tcache=tcache, - safe_link=safe_link, - ) + # make sure that libc is loaded + self._waitfor_libc(timeout=timeout) + + return self.corefile.heap_explorer(tcache=tcache, safe_link=safe_link) @property def elf(self): From 1b203812e186674b250bbcb39b4ae68a7c311aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eloy=20P=C3=A9rez?= Date: Sat, 12 Jun 2021 18:16:58 +0200 Subject: [PATCH 164/179] add corefile samples for heap explorer testing --- samples/x86_64/core-sample1 | Bin 0 -> 2533536 bytes samples/x86_64/core.large_bins1 | Bin 0 -> 2533568 bytes samples/x86_64/core.small_bins1 | Bin 0 -> 2533568 bytes samples/x86_64/core.tcaches1 | Bin 0 -> 2533552 bytes samples/x86_64/core.unsorted_bins1 | Bin 0 -> 2533584 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 samples/x86_64/core-sample1 create mode 100644 samples/x86_64/core.large_bins1 create mode 100644 samples/x86_64/core.small_bins1 create mode 100644 samples/x86_64/core.tcaches1 create mode 100644 samples/x86_64/core.unsorted_bins1 diff --git a/samples/x86_64/core-sample1 b/samples/x86_64/core-sample1 new file mode 100644 index 0000000000000000000000000000000000000000..f34ccbcdbdcd16f71075d24eee390bac28b0453a GIT binary patch literal 2533536 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%0DldjyyoW=zG~zkBJl#P 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

OqBH2B*QgCqp6g(>3lkoWe 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 z

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⩔zvI6kv5YZ;5=v{lKxxy0tHF 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

Lq+u7E89|IqJ0w8guxBjkd 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%0AG~?zA6cPb(Xl|E8wdNe34du8=+$@ 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 z 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 z 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%0D^ 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

fU-{Oi7CMGyfg}-A{_!~`(eZM#(7&u=+ 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�Z!21qZfI=WQ{rrHc|}v=Mozt^DN*Bm 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%0A!&dWpoR$gw}`?Y>=$e*vC z5r2Vtj`Vxg^ICsT^&ICvLOn50QO}samwMjqKXT21dsF^A#>2~f{vzjPu3v6rNO{OV z(0O^pU*o(ysdO~Sdd`1?ld{Y|ffq!l#Iu8MoK(hal}4}+wjZCPPHM_pfg3aNfQ2>* zkkZNo7-a&CG66=J0He$WMwttYG8Y(S4lq{VbXU34)76c4z1cdQ<;$J&QL6t904;m8 z4CxL)K@!!kzUfZN%YY6qf1kR>a?1lU%F~n8H~pCMGVa66&-K@MI_d|sl&90HZ@Q84 z0-nRmKjep6=K8}FP@eIvzUeB;3ltA8|A@aq${(Zp&s0&~0mbT@F6EOE|K^h?{jwb0 zPncCcaiF&PrZAt#%pBgzbN-snPe1@ZaR9vfrXZil93KA3GJm4;69-pvhi6%YfHbn^z+naMQ>%Nt2GE?w0h($Zjo!C~NOXZn zr@g>`pg%;N`oD?(toa)H(ZKk5aTXRY&Whp1Sqi*3IL?cMxx6^|$cuwz%+&uF9s1sV z|2yfBw&v?QT#$S_LL?u!p!;@|NIq~u{Ow4QeBe&Sx1&YJ@_{>L-Qw@|Npq&71?fJALQl#z+NXi&NuhEZ?TWpe9K)3eJYoq7oJz`~ZNTo)aP9wP`}KQ(m)u%IA619v`gQj?!hK%pK5uZJ zx46#>FS+zOq^geb?44Xbp>2+)lzrMlk;4#aLj5{}U*aul zz4(o4K=`=pda=pBtx-EhLe+9G;{ptxK3Ml7R?4oh*#XicE=w!-t5r6PwtxPxCCKkTq$eh23aGwAYIl{7mGa6*cUcF zw?9MgU9>=yZy|AaVf`4FNhx&%Y-YXmmA>;ehe=snyy3WU(Ge-+WCmH{aT*t(UuTbV z?+ek^0=z~Gkxj;Gi$>vKElzl^_{Ri&!cv*Z(e9T6O5)&cTI#pzWs;Ug5GpRJ%T(;2 zOF0a1G1K5v>l*7Bd@3Z@^svM96o*w@w&o!Q|EtrU2>NFa;|u1oz2reIG94=dEp;}D zN{d=-ZJD9rOsh;ykvlc&mIx6c_Us%Ab3+Y#c5@3*l!L&(9eM0$2yb8RjW$s^ok+>- z;xPf);t4c4yABT#hr}KbFkR@0TK9MWg$@Y*MZz!=rg*9d0cE23AbFT&A?LSeKP3=QvH=v= zS5NJt)IBG0@Mp0T0VN(-m@vSr?maq%5Q%9$n6I~_lTIO!k3!$);H&VoYHIwpju}I+ z;mnx0bs4OtjlhRy4^~eOKH}#RiA!>arY#zDPR;DIB|%h?l81=%h0`pYD^UyXTTqc- zJ`k{gRQ95$k)mTz*gmJ~XIgp=slmj(bS$0bwWIm%{7?wfrTHk7o%TEIxBtubQKu{4 zsT!sO%Bs>HOzT2weasnky^=XqjXpthc~zkA1i5assy(P0b2a^wKR}T>gg9>Jrc61k zW9E6H9eK~A4Aoc}K@+mv76XDAN>xW1K4dpOA(?A3%aGP};FoMxEI|~1WG!Y+q-lp< zbWcy^=BIo4?5ys;GYgQ|F|ql~K4fT3ekLjjC)c7#MFOE+I z)0Bc*^S6oA+C?EvIX^Af&xY`^=#Oz@CEl{c(#JmjNx7R|CU;$k(3|Vl%kXgvVARd! zj%qf_aoj%CB^)|ct1T`VhA=%b?PUUh)h!ucYoH0peJ0-R*gsCz(p&jFG$cNE(hpIg z;I82IglHeU942~rNW@z+w<1Nw!%xPn^jNMgzx-2Y^@!t9Yvsou@52 znM&vLIaQ2VXzxK+rFQnU1M;|c<)isj$H!w90!{!`JerMobf~;FuyXPb%rWcDQOhdY z%C`o&{_t$H|H5W%)p~-)7Nc%`1|?pFw|EX1hW+0~R`H2ObO9SS?Jcxt(vBHjpe?Rj zLNg1+3&tgxJB6MA&lU%sTIzWcL>teP*>mB8E*(K^$Oy84ZO`yPzm4eonaSKF^vk?V zX6Jf$;J8^!-6EAK;Ks9=$E1w2P6OAJX=%}-NG{z)!)Qur{K#C$A6a*@9vq(xVdHDz zTtpXFTo5H!|-7utr4LjD4R zGlntO=4$({7k;EThho3>*G4UQuT#M-L9+_Ze2-2@c02iF(TIxwNURjXW?Dp!kkDe# ze}sw$!3|vv>9*R!3R;HfzW5NA9Up98=zM%CyA>S0>kD7GbRcHR-Tt0?F{c98s<649 z$dhvd&bT~oI36TIzM?tsm^!Hn7Rm-itK9tckogXq56I+%%&Hzl@YYg8DI#+bT&^HYP@3#iDHqiK+BE5E za=HQeySFGH5A6crp+I=*e}eGw9T5KTM@nHW^?MiZs6o)?LbD2uSo$H>xU8jnnf+CV z&Ayfv`{Is?xQQP!5m)ofitc6S05jhuO@2ZH9{>`0nL_!pV{>%RcVZKM$*5p``n9pW z3~q@F3%G*5e94nD9_+~_npfv%6Hs;)M$&ozGh7O z`|i4B_7l<~ih=J?<40^>O9t?p3Y%KwQT-MV`zbi4Z}dl7egqR1HV%Z1R(Q5^EWO2= z*pfKVYjQ79uyW2hcU`Pv;j6R{))DI<-RTSAx}P-@^e)v zY~AJ2mamJVoKd4KZ=-%E=+u-GC}$NL^1T%q(L!N29M$9u?;|{@R$4!6sY$f=nu5RB z29GspkrkUL<%-<&$u{x4QzHPbv9`Q*RXs25tF+}Wm9Jf;6ehaMbGz@K3bcBg_t{~} zj3bLKOa#B1<3wplCvR-2xj0Rw1&0kAZ#t8x29j;m zEfY6+sjpBB1Lh}$9R;b|Z|0{`w8mVCX&p76*~DzWvWHtBA_bbU36gj?y5h|-NRuo4 zm29H(S!-*#xjmY$*!}s-Hno;?$hdbn4fBeco_7}4gS;*QARdBu29xNbW~co?_4>{Nx~$EV{l)F}Hd%gVbRl?=hS|-V9*|zemuCOm!Jl?(=Ys#x zj;KO?qn&?{=(aPZOFMrcxw9Q6dej1jDuawzcds01*2zAXK14sV#jGP44|{<#o+w1D zF7VDhr9pE_!4L+M972lQ$gwmcpO%pnoPL2CNn;Qb^&xf3Ce>qD1Y;DR7k@g3u3Dbn ze>2+1^R@I1tcj=v(L0&D=(|E{-H2YY0`3;(R@lP7KphnG3D#hmz|q=`$-x2Wy>IDq zUrR4z__}qs#N^;GiK#>K<5qj|pQP$$`?VV-vzy99(5&fgd>S?sgn&}IhziPAMy)}_ zYhM;j?)GT2e@G8eD^Ykc%!2z89?4l0@CP;F#*cf{nz6yfYWjQ0aGV9P9ll-ICm{=> zA2IdVIy`iPIn!Rqybm;GpJJ)79zL4(Sf+&(u|JfM0hs{n*Dvc#-`>ZI^k)hE1V)v&A(w&Zx4s17 zSZjzR3i*-nc6gf=suq#_NTCS!EU zo*YvybW!c$_KGl&#`IS<;LdPJ6Cx* z*F{)S*wDC6D`%T_@1Iqq1Q$HGOq60sgwewBzCA~<`Ng|^5}SwSOAu#IGo8;wng7}t z=67BZ?@a3OCO3aq@xIp5O(|i}b4jQe^h3Ty{I#khqW^$?27j^*`!N+^242WZncrY@ z@Z*~$FSBV5M@}q0D`tvsoH(5P0^xy4H>yS;Zut|f=LXmYvkF`S#_jY+;ym$-FLqA3 zA*JDbo@17ba_TqOHqRa(WADzXFR{ruOkyoRB(X3wAC6__NA4X-{i|J3=Y+z90oS&K z^;j(Pbr0eUqklL%X~A`obBZ&iVGPePOU_0YV%wYtE<>*A^(G#t!sAqU%os5WT4R3a z>S13toBe+bUgXr%G3iD0O;P!vHZYHn*6GJ2znoD@;6qz|P63*=rtVy=rH~{tH<`^_ z4fa%iwACXANuR@TQ35wmEMj{D^08Wo*;b88c5)gDf@fx{?*z6}vNeX|qp|m`W^eOe zpsk*REMQ{8$W>10oJ$UncG~I`nbbJ^V@H#FcboN5c$x!23ctN6+v1&3014TC;mKiu zjKb>;fa^!|T0-9QyXG7G0sQkL@FlZbJyQ+9|1#hhgX(O%@8|{I-xug7gdnX4=(Aym z>=;d^*-o3XbGxejVF-1Rsav~Xl0jfTTWS`J9k+=S zXXt;Zd%Y$tCBJ2thZ|-AVsAQ@>$%FI@637?=QZ9jT^Y(>#t2N-Q!P_-J>Q&qjpssU zBV7gho&sI;(Ikx(-(puzBH0B(5-GVC%>sEqS z_U;pPDpx8boGZZ|tJG(}-In^DX;S@%TwHOX2RNXotsVh?T+nrk$XVvyqG!GyMiT2O z9b|G6lV)aZlk&1Z^XzfKUu?i(6VAyCyw9U#HS?#kG8GBJO)X>N6eWTpal-mT=2yAi z^?vKajKUbKPr0@&;Y(GuZIk!r!j%~Z{f^C-2_IYw*8&$-@Nluq>g=xHNWSd)G12J$ ziTdIlO`ZE|Nqs3wbN3)Lzrf)%gB)8Lr#F~H^v zF#TnqaJ;B9aJ7i_rIbSCNAPi~go!;7J}JN~jO2ANUTi}W%AVIXRq_d~&ec{gQ=}6T z66EgHq}H>#$Q3%wXXO;@UOru&$+Df1hmydX}77WKZXBR z3I-||PwxQ)Oq38~3#Q7NT0m9HhRd>c1s6g10(}cEfiEUDa({z-T9XQSH7hlGR<0aw z*6#m+?z_|4#=r$`v;^PeQr zzIQm})U7|yW``%1OyeArH;1zy(Kt=ZJI0gd%1x4nBZ~+!7KD~(*+Tnh3@zeoLHakz z+o=!k+GzGCqQ7(Lhp-?f`aAaU=ibJCeo^C%38fYn!wUXCG5a+Rr<_M|I4vj#JP`3% zyuLf7Ku*-_EON`8g>4BhDEOQ$x$i>h2g*;%$}$&9e6C~t^vX`R|6=5a$6YW5!DJY~ z;2PkzMs9jOLd?U5s1dQzYvk9A^*3O)C5(_BB4=kqLdIMAmMAPQw|4<+ohEJk!b7&<$IIFXHrMLSEzcC zQ$=(i6zTUWC?AgL1n_T+uQ8%iD?+Lya;1+<0p)~e+epR9frbAeqD!%0u$fjzoyj7A zaoJN)oyU@qK%l+ZkZA~u4M8kAB9abpdaEt>A!I2NNbE}&F|AolNTfZe@r_~c8g@s! z{wVwni*nUZqI=No@Xrve&eM*lI-~avkDst&jP5V@3Se{p5r8>yBT>gnR06(1fRQ4U zK8j$oKWeky2pycPk1O5iJZ_~~3YPqOES}62EjCrLMfKp?YG*=wFhOfs2{{hsSqEvY z_uz8-Terg~$T-hsE{sO9?r?qhK3swDh^VODZ3)}dT-A=*J#}d~v-*-WmI}~!o5z~{ zZL7%1w=LgB1Kb%HbdC%mSX6eTjk)PY5wRnwjuf?g-)60pR-g~+nm~J!Q(I2o(U4~* zM>;&WVICz#DK%la406tLf15Skhz}XgK~WY;O)WII-y~tQ{lT%|IN%&qpBSh|hMVcx z9t2D4x92QC&D>>PGz`ngrLrr z?Bs!ZLC6+Up~ik8qga6Hfxm4sN86Airxr3M2Y*uH<$sj}Cpn0$5UBd3YK%J&kZ;Qo z{?43u@2F^{V55&pv8wwNM71qj#R4VFI-UAQecpded&R_sXjJ43o>syU^+>W5?>WlRkeeW?q z`)JI{Thh*Qs4w5i_&n{APCSN=dxc?!_6YZ%hwS6F<|n>l+$WdsU$q4RW5=j>zR2L` z_;C3j-9nSG>)Yhmhh(GWDNtV9cG+u)-K<@hJ8-v6*7Io@WV9uPB(TIV)ql`q9lB5K zMI?F)xG%@!bmuG{@0p>kUOi5MeBJK*lI<5m?E2^S?Ol#>yBSlHU3=ECd|Q`Y%YV(S z2B5^fdmPDK`nesW#>BqAP)V`_0oKghxMeCDiq6|Ez?fjTJ%Y20o%*t8opji~)bd}K%IRGzT(hle<&Ww#nK>RYYL&)0 zjGAS_7nUciu46S#85BwM<`m?7?zyrcr*XVzf?PkeTukq{wfTC-%iC4AF~pEio7w_ zzZpEMm2Yiz>J@Z2cKsjiAI95#?+?OyiQRWxHBinsKiqEHqP4y#4K#BI@$wFBqJ=)k zx8CK_yIrurdvUZsP4Du(ry3)P^`f<7#^JhEZjF{N*#f%#AHslv1rOSS72X(QQV@h%qW^0Rg!$j6|Mb?9%?+JD9f92LO% z4xMYd^5{k{h*ab4QjIsOYMfWV9u6yG8Si!B+JqBo(lop8y&$?jk2NE`0J6a_15Z{)44 zNgGM;F~%<$qvo}&-IQOmaHlK8lev2{VR!(*}_)5ONt*k9TN}EkQZOtJ;(PmLqAa)IjiiG8~O`Ae-4Ef%1Z? zLp1?0gSRlB1)iGH?k5ip{pC|6M$4`q0^=?f`CcNs*{s%3jg%tbOpOqAQaGrV31Vs0oWiV&!ha^)O3;`Rz zkyO~9@iS^>g<$;`58*R|8=;(V<471#IMUsgIgCCKTa^y|pT;;mmLH1?a=JWo3Uclm z?{QKNj}@l$OpD=1u9&Z~@92Uj;l#J>`iA_hm+ijK;j1)H=T zd|oy(9v0BQ7Ua@yC?vTs%P=OmUS-vopPQ`+W`%QyTNL{myY!5CrfDD4xE$Jludso5 zwI%=I9aFF}K}!v&9iMc#Ol#3Cnb9x-kX#ZQts@+*ifBeXs`=XuRa&ieXayY$VHguTR3Q(U| z-8U3bzla%Bh`%J1n`nGTMlV6WCja>-l(Rgc*&Vk97#Lf1`wJN}4=KnBy0Z?tSp0a( zxu&7C(bG^}d#B6`yuYbxUNNSw-urWMqP1MgMu$VzA(wEux#xlAK+{@f-;6t_l)hyFE(POBtH5~sVzo3RJAs;$Jp!i*IAWqV3dfc8mNP4$;Cw^k ztw^b?D0OSCYJW}hijj3?T5FtuT`{VHi=(8OOC}#-bH^d;Z6Ls8>Rx=Clg|+Z{13j$ zCkR~6*o#W9xO|4I#C-(>SYy^~f%A$X3LWO61zlc2798Z)e$z?!eONhm=m7>4N5-N-&{*~X>mzl5|s0lIu>9_vcgm~EZN@5t|LjrM*0WrdQZ@II!E2>W> zK+$74g*jw>I!&>N+-K38d_5^GdC()pNNwg|Ze_hQXNcC?jdW>Vkyu*nX}~faACz-g zb*lg(Tm^SzP~&ec&61=kQ9?w=@cgeUR^e#kN{poa0;J0MBJ z_}3=k<<7ZAYrP0>_2o;ROVqq@OV?WeBI@;If~B47Zwi7|vHQ_HUBnf3J;+}3^upo= z#ain-_>->$`+QbxaW}0P3}0`S*y)qV4sGag@M%6HdR_zGZzRU_qQat?#+0pjIwieQ zYgtD9gxzl__kv=9?IFJ4$)~L>#O+JZ1p0|8?G5Wsa0E*fio8gE9SXktrkQiJmc=T+ z1%>lxVE)K}?<_9CppuEJm>iEJe$$GCD=?BQDbqa{k$3nZcnn2(3>`k=Q_%tHKS0g- z(yNKNJNOU$$zO^Hj#nTZ4FGoCgv)RJf*8^O4)|V42{XnX{DQwU5+%+p&{~fQhpre3 zNe|%iTi2;XP46E-6rg|%r+Y%u-D##Prlrd&HtB${O{KfvOt+hKwrIL~NjH&n;d)qO zbUia2&YT%oAHEm1Xiop>I8|c@)(#cMu_!cDI?L63S2a(cxj<`qj8fyARltTh2#eDR zEtxrp(*=pEAuGHT6&FQbn=L$Z5$fwiH)r=cd zu3FwDY1q$ky^+(OgQ+?FpiOdmB4p%rzJQuOqrjDA+(oS1)X+Q?cca8b^aUp>jAeq6 z<@TVBPvNO7VqT`mICvKA0#|eTDh2MzP|LyxDN*(!`+;Iu>o+MQIZE$s(4a8sn8v~ zP|6ubC&pWhaRzlI>EPAijS7rkKBbUiEQt(fYpwGYgeL_8E+fO2sn7&C{t&#`oc^GK zzb+I!M?h1O(k$$|si5zupu?fy5s1~C{w)wtPoZE?KBv#5JsIamn$xe7m{Nx?6BMqm z{JBzJ-n*OA#dZw|4;v-?J#iEwsD6P$l&HcFgn|zdMAq$E>u(h;4_rXP1L3THM};O_ zr?t*j$v!1iWoQ8b&C~Pe78HB0Xik4a5|KP;$2**vA_Oa$xwJX`X$cO6jv1L5tCG$t zuwN-j*QqcneQ-?D`R;Ji7a__~>=}r@D@I}1cIp2-*ru)*n@igo8 zDHYo_Ir}Q_C|~+s0!{`W!_R>ABO~;x?5mI}xP2-sCxZ9jh9EROEt?%JB<5#h-W^twWO}5lnygQnbI|&*T zqfj>V$9>@crGodlZ%g7z>wiSyIs3z37mlB>(pnyk-y8pIf`-N5kI{uRfAkpQ#Bcrk z`EhKcsY|_^x5JXrFDUi#!sJnhZ&l+fn-M8|>?5gS%{dp_qd$x$@9jf<$&Cg?zd1u|;;6o_i|^R$Ry-gcQ#ZU-Brv z61lDJF=E9`J=P@i%^sP@*`o3f--Z>w_u5g&#IrAE>`zGH)U6Nj@;u{aUgm*6pF z35ruykL5uk`?K^&7W;Fb@O(i)bdB5by>vv$d5@&tCBCvdpn^M)7foq3GHs0IMMYXTru*B0sb{MKtI zCB@GhWKZgF=*d&~44yzP8~6>{rFdpH{~ZwAHWE*`jqw#<5c4R+vvciRip6%8C+%TJ z(#QJbRAMl9)iYlr5Ds8&Vo%ym#k|9}zP@?i9?~{<%TsG*mpNwAo+RY(dYP|iEpmK^ zRF;e0IV<(I0zPS1GrKzl=Ge;tt*5TS7X;1wW-L&k{i%zUkM(=Jn)eN(KJ7_6C`%pR zN>_>grX@{|iVQ++#BmQ$_}W+aUWtc*dhT+fQ9(h8ol1}z4OvT1|m zXD{oxa+9VkY)&5T;9j#%>#@<`=Z~FyZUIAjr`ks{9Bx5{Fi~B{!=B$=d`u8MCI{6} zF<@d&XpQG3cz%p}Ajz*1Tr7gcE?JaCE24dDM6;oHO#Kzu#GlpOvB_qfZ0+f>9r#z_ zf0=*mFL2@-PmI5su~X#wGRC*Qz#!(_7c9Bh$z&VL_iDn9Keo&zr)($TWN~!sg;}_sV)?J{y*Xxb@WY0gGavWgjW5?2E!wUHbQJOa!?1nHaerVj&K1)`L;WQElHM z1-dSq#qeTBwskb6!s}wLjwjN1-TDD(@VJCH+S87-%c^v1m*F+ROg4#RPe5a0O@s;m z3gHC-3vSjpkOv>fLzR>ANWO*Os!UK(-TBkn4d(BH0@*aa=rT3`YJ$O&KZ2 zGm(h@k^zs{K6T6fk#ITJM8Y>oxP@>>OnOCuKS;<2JdF0{_J2E)UWNN5d~+mRX@Nfu zc;Aryd4b!`7fr7AxNfzvLf(9Ac4e)X?fnSa=A*Tq${MY;MBLrgwUsXBjYue8?w2Fu zEQ9Z| z>b*Sg8K?RM5#hSks-j3bJvmNA36VDN8RI4tm$Cr(@v|bRIp>1^p^b6U-4qfr?$E|2 zanHmZUu74o1X?Wz0cz5U^wcTDtZ6 zww*(15Nr*+sQ`)MCyLf0hl-67y!Ry~IGeD*xsr|yOLs`ou4UX9u$q2xQPn%#;Q0<) zk6%3-@x|_#VF3%L41v5A4|w76Z>Z!OCKAj^?3TyLo8LN>ae*|n=lK#sAazU9oDQ9B ze{7vg{wHb00I~yt+xK~BAs(3T)2-F4Bq?>E>Nk$ry`F_y>$9+U^U-p9frA;7xVtNB zJ=N&b;8?}}aKt8AtI<34u@8Z*xcVvgN@5JYr_sJfYIB`5F}ZF}wSsF2!l{qV$Dt?B zl;=@Bbvke1;chk}!^0cJd+d4@rCpw>Yk7uw_^9x(T}6>}dUCFcGKHs{Pij()rIRs~ zrD^dZDPof(I0$Hc>?iU}{z#swAM$Jt(d3#I&yuXFXh{n05Czw&;11&19FlO)g=-kJ zs%Y^lnnguBsh}O_8Tj)Ta+y>q&J@oGzqJJiBbqo%l2ym4u88!VNYz>&XF4JWD<1P5 zxlp_RVZQv<1H@>0|D@rXF29vc4r;aJxbGj)Qgxf4h1%M*CI-^R=H*? zI5}4S`K{e4ahCrkev0Qjc_pHIfVae%z^!sPl{|fdk=i-%0An8FAKHxeGl9?aL$YfHmY}^RbyQnAZ9$Mh4AC%e*y> z+~zIr?lNzKQ)@k+9GiRx*Xf(|vEKlJa2$-MCy(HR*#bd|?FJiR@Weq)7?4Rq^ZUYY z!hyp&0weR2_G_yHitSz?MxS!?bpk|g?vQu#EAm8czQ|j6?mphYF9MT3c8)xg-SSMm zmS>pfl-&Hgq#P^h^yIDbOzq^kmfSS4|MhWwb8ntot`dA#C0MEwEausKvKP-iqN4qW ziuMB)?I9Jd7teiPMSD<1dq727$ulqoYu)*A$9*T5LCEb5h;TKA_nkmDo6`-W`Hr8* z=~?Ok*Az_Yifeas`dt81`VlMPvE!rM5kzpd-4Jq)W5ZZy;O$hA zTP=)skXtQI>Qm%RV8dAW;2ORRK2YsmnxY665it7LEa2EX4j?nA=<$5$o%ZJaQkzo! zs=i0z>tGj?`t2 z{<}O=U*u_*^P^2lw%PS|qx$P2BIjeDq-j2)>VI}b<~*X}{fCP80~PNf zBVI2CXjAbd(|R&JH+i^Up3AxC@G7=2!vTKlf8)buELt-rgVA{JW)gw~VB?9U>7_*J z444YE5Gi+Gb<3Lte{f&Top=r@O57&V?NRpqU4&@G$CC=1mq$ ze4a>w_&j#aP~-4{u56)qTE~Hp;&Goc{_vaTIXldde4Wd!Awcq5<9y^zSe!@Z+a=u%(&RX30C5T-1)B`tIoCJEWAXe=NJTM_^nS6#ZDLc zL38)Llm9}juARwG$!mviOP;zkT2MU44vWP*)L_m%4_WR znpk~$;qNaQf2(9O*L{>16BF^iBbnO$vOhw06(lU?*v5uYQxiNDVpC~3-Y)j!VX?uH zRyq|8_j~wMt-{PQS68|?9pXCtFAf@F7AoO~&bW43KIwBU_LU52h_Zu8R?-sofhR0> zV~n6J_hJq@vX^}W8y6OGSCm|LkmB-fl!=wrS_L&2zbrHq6*A9aK9WKP%mGgd%+&&Z zK**UQ?Dy=&evdoZvXZkN9ftj$quB3JG-&grmG+GPNi;rp^Tfm_Uq60ChTwsJ%!Q5b zBpXxXy_cx**RzyG&?eE@mntaL)MJz?xB)0)^|;c%42_`zlc0`Fv(rdZ!f2R_F=BSWW+Gc zLSRNE#htUh@uy-KgssM|D@Hi4NX`O^Giir+qd$29&Kzfo_Zc}w+PqOpAXO5h50taO zd4a_jk)-XZwDn|A>hC_@OzAmsw0f{3%fE|Jhs#f^|liEi9 zP#wTo+uk;^NLw9ehAw`;V}GKZgB#Aa@5Cj&Idy_}q@CS$-am5IASNr~=lSRvx+{w# zqoZT*px5?uivwoH4gOFkICjF+)ahdv(0=uet?f&vU~x|Gd^V3nTy-B`iHZohRCYjE5~#U3!WO3MBL zZS`<%_2{hj>>Zx-yRM1WuW_ z7vbJLZbsPT|CIALUE89-;d@m+{isv>^GQ{3CwoAXKI3MQ#a02G5=wuTfj~4#_>hNO z?C~CWCB3oxT3y|k`g7LJ*f#s0@{;YPzYz+{6@tD!2iYMnT99T5%h}P${@(S@!*62+ zXz{st-z468a=EA$NWt9MAO3j#%#2@#%H%S_pvdiU++oXm!=$M{?N$G;6 z`k0u+WY`ID;TPyn* z!ad1m#z?|Xv`(F)D_bxnL6@+%N0+df-KzokMrgh{LI??@;O-Mh3FsK4+6> zlry7CxInZI`r9|(8oc~A)gLRb0Ieg+ZZeIMX-}`=cn{l}_#;c43hZT5X>?RBO4N82;ot5||-u^oi74jOfxY^WoLiTedDxWc90ZIngRLZv@FQcRjt{tO z?!haY66mmVj%zJ{A)HINY@*RAJTxOQ-aGh^Ju%LM(TX(Gy~`y(jx;R&W7pO9av}=i zH2>AoaZV~|8+N(=2@0DjsBAsSO4lseO#z}mw+QrNKZJYWxiIBKV>uRWlqIKqY!!R> z9KrAATv@B!GpPh%@<|z6bg1AFazTf%p25f5yu}Sm+?4Vks^bz~*ddYI9?Vh^r>cl~ z=+ntbaH)ulw&c=h;TD&Wu5EHwo4j&M*diJj!pz_7=cN7E=hLdLBK+A>;@Yup>a-e1 z4TYs`QTivOttn4-8+NTYa@(h2DmkP3u1kNPGeOEcl`xx-gSNAeZ0vdvndIOwSTT7J zFVtRblV8HurEd;Qi}ie7d2R}1#Ckr7C&$MEBbDdmegEi$UC;S+JIuCzJUq8yek~M^GB@4DS z?xVeID5Am+f%MsI$w=GeCfs1##49jAGS3$HP17u%LN{9p;nxYYRgTSjrXZROJO{ft zxIy``3CQ8X(b*~9&ynrUHalXQbqpCwAQz3J(;Xb<_r8?X-u1pcmsQh zVBZNv!tF=6!`gVa(B?~*zEudw)duUK-x%1Ld$Wq|O@sn%4ln4q`T<^=LkNjyB`Em9 z>|k=k2~|E>A#(b&1phtDES9;#6Rn4wn&VTfkRpBWa&l9b1=vpJ0np41?~G=niZY;y zdUihWyZn*<#^?`365Hvd{J9C=pzLU8FJbE?i`;`5kEduOz&Jl;EhVMKxi8v3`-nrg z1a2QAS(!t>%|ZCizzCX@>K`!ryIo2RCWcSNoWK=9?;raF%RTfJxj|CGQ> z^xf)ekhbp`2=wuRM1d=ZJl6+gz2ubs!(L+7k1H-zM;xtA;2yTt9=BLlF!%MIFLH@X z*5-lJD~vscv926g+avWXXYR;yoAn_59`t@sUK+Qm`LB{*QBH=n<-RL@V#iF$n)Smm z=g`mapu`Y#$9M+wKDk{{SBMflQhy;2hB zVir(w13R!q=+f?pH{GL1k%$&8rlN5Y5b zh~!uq?4=Bb>dD)PAGS>@9Mil}vcN4yJ?BrI*8e1;{4pewL#%HYYJJ_R3xL>Es(s27 zSk60;QR|(===yCR{D74Q#Si++9DICDCfw@Ep8bK3IoHeX{4|$7lFUlw=Fll&_spU_ z%=FNZdA;Qw{43)%V|?Pz{FI&*?%gM^PU~)7^5@pA+i{Y8J@XX_(#N*Ti}8pt7>VHz zbsqhs98#n8%k1EDX%UC4YmZtiHm&tvfOGlonPkyg8T??MEo@7Mv(;keqT|RQ<|FH! zan`}iJzP2OEWU{o0CPOZ<8`z-crlL*a@mppQcl~PM4u(|QHGlr8+r_3zzg|I*Y2k` zW0$p~)#8o|u=0yO!#@*paC+IdVGNL$JZ%&pY+;QXo)XffJJQZF$5+IcbK5yb7QaLg zAq1&;z|0iapuu$Qgm(R(hH-SB+iN+L0l=bq?D+DQ5AH>@cngXR#H-dSa@`J+Hgv9sDSI$e~ zW78g4@67RFKjD$~#Pusn(xzxFL&>k`x~C!}>}!86bW@ulI0KXC&<`_I!z^LjWIyc; zez}s-AGd-__I@JS(?8TVtNa8WILpZOPw|$D;#~0lz$SFZqPS5P#YriE=ti!QE0z)i zKVl)vFg>re3?rQ!;hLi8-D&-VRW11wFz*6JTGw|D<(+-Z`(D%1b0%mloK)n})v0Nm zUCpz7=($@7NoP)?r%`{sYn{o@Q2oCF#6dN9-0lmdVNum^UBqlYsmr)p5aHjvQK~UK zG_#kQ{OV8rHp#_g5hFU;bD_0-YGf+w_Failpa}2@-fa! zrPshnhVN-`Ns;Mj-gRc|U@jlHzepl>V26)%MBZ!GKCm*M7@4N0 z<`bCJ9$ZZ#f*jQFRHr)R&560Zz&fHqgO*>C+^iRW>e(a_+Yg5PmW7tXyIGw-MsF76 zm<}s~2XVqLf+%ySLe%vLQYq*6WP%}?aOLa&Ew9`|yaHQUe2Bv%|e_ox2U@b}QEt1?_xy(@dZPRz&L~e z^G)w4%+4b$L#c@}V&wj3j8kfkcPYcwpuhxFP_8CdwYE7g#DQN1*-|TAzw5Nh`r<`G zOnC&Kq_};^(?jd?yp#3q>9jc6i)XiZE?E;ttw%)c(5OB`glRjymLWZhAk$oE@+|v4 zgiNChGHq*uOpmis*U%5Blc!8Dh|@Hk+9yveBPJ$EJAWyO`Oqd|Tn4HXW?#6O|JrEL zD>so!7&4Zhe<#?QxvAL#qUYq{)Mnn2md#uvg#bosytLUEl=|N7q13ndHt(IV+x5#B zJFo}K#k4FNFcxv-g&j_D*ztkE1;s|mvxs(48moF+ce_nc@(86iMF4w$=O6of^ivGp zy2!Ua_CNU$*#JL(ALmHG=m!vdftLvG3vQ>iig?2J#5yHHp7;i9;4L*@ooCm-3=dM( zs76^~ZYJ@%+nY>^h-e(|>OmyeX^8X`>suy~Zu#F4$?U+OkRAK2S?y}=N^P$A~hDcBpkx#Ua4JyX3BM6?hnA1Qnn*Ow%rZyOGO7>B@v^G zt3*Az&%p5K1m*S37=E{55B414_3=ZbfGyuP<;xdcClo*WawIV2PVMRX6b?Vhd3xC( z>eP$#oO+|vJKfnf<927xwuW7DC#Ih@m`?)#lnSROY;C`Xap=tKtXJ3Ej#t;3aDU?+ z&Nj-2z$Hp^gh*DqFLwo>@t*zaTeasB{p39Tgrb?riztw!3-|@JWRzGE!w`8e#5HRn zEQCRR{t*{js$tfNVrK&rj=4-CvkuXSKMHRo$TmUZOfPz3_BqilKWR!6=VIt)awMY*-qxU z(3c(O{miL<>b%sMf&t0#jsIE$~SS+8P^6D8Ipji{_IbmT2_Kw$7F`$qam&qV&*0t-!_fg4FYj zh_W!?5E%Lg>!dNU*J4fH49)Tr`(d#__NeOJQRbjn6q{awEiU3VZ6ktsLvipR0!71=$8(S1WlwXg~XY|Fdrm;M8ei@Cw zh4{VcA?05qt+9{x@Mu5rMI*zyM@iZqsY!YTN7{DA9BWblBR*SvCzCv*);MFKUTD%$ zmMs3VR$`jrY7)G7jL>&{ANaW4;V4~A0qEXj#s(nkjCq?t6^p!FL4IE-ndyy;!y&8jfL{Dtr+Q59u#4`qx3LaJ{!gXTc zc`1Tt3oAUm%P;lMj_0s4BC`G|`FfQ2eest|-?nB%Y~}VEU*8^+PVturwg`$SKW4|o zi;XA8jLc!97Y|aQmF1~mD1zxQFahziTtllKiy&k!eU9NU&=_Qb7rE*xSJXO zGN2HBi|S@be`zF4e3bk++!4~~)-FZocLJ+V(*Iv=*Rh&-U=4yXTJ)RLqInZu^ix*> zSL9Hb!bbmgXnlfb<00!0_A~zRJcq@nX9PkPQ}S(j?2_YnL#NTM7ytF}Zaw$Qc!rn{ zGftQK3h-e0f>np~Kph$FHk@_)q^%;|{n2#US?!-YwF|ZYf>r7bs(rfsv$->pqy7FHvRxfpM!2uA&Lf4ZV=K<& zYgOWH?Bq$Ejx(J8(%B0<<4~W$%qV)>LHiA!C!>G-Z)AnUV_;aa?q$30865$?3V$e3WI?5a;-$qKSlHv#mt|lDelp;Ts_LvdHxS|*DqVX=hX%(Kh7f8I@ojevU;8DMj$I_*2No8~* z6s7->l?g~lMk(GK!HJaEwkUe`j9iEGqU}A3j z51jWOcDFe-SH@O$usnT>#Zp*4?193zkwd51<*pubT{m1NKqg*t1YU>s=GNCfw7(W~ zWMF)6nxO9NNP$`|<0T19{wMt~0Mv~nW#2jP=8y>c-Ppo7P|WRS%&y-@>(Izs-Do49 zf}ycnQ0*Y2+a;shq8WXJ^u)W+n9!*V8>T_sZ8yZZuqjH*bv1v8vPUXQ*qv|Ah-nY~ z2v=M$_exGT;?h907yvRx1@+dBejMbTG*vXjo;q|iG-nU}{@Fqj$1y}AAH`jb?! z7b+fTH_H&bR-zhIZQLoD-4z#H4y>5utNNlJ_0=c+=1JP#^pgn%^o#!r^otkzfvkV} zy-QVuOWq&-28Qxz43z%qcl`A96EwTxgHwe$qU_fv{gV5kU#eoPUi>FxedssnE6{I{ z&<|w&)9)8>^g#3*7|MbeDE-s#$m!`PXm$+>9%mh9Ao>mKhkmb1+TQ$^V9+n&E6^`N z=m)a?>316#2cqA=P{zbS>7RZFPftHVvnwI^JpKJZ^kXTu&-VL>r0q>VnO(zw)~`T6 ztI!W*{nPIPFb+h&fuZbVxF3enKmGQco_>O6mo>N?SOd{-Xg~CuCuw`rPm~GJZ}3;3 z-(aC1$oi+>yUY~ACGSuE4GiVc7%2VIul@A&6EwR92d4sSAo?ZsL%&o>+nau<^o4#y zz5@M*2>n3TKmC5e%xNI{4Gd*L43z%q*K~UN37TC)g2$OY4n#i&dVRLv*ClOl`pMuO z`Xzn^`hlmhn@9ijyA6y3(QjZVV`8B6Pe04)=_hD*B?h0TyaUk>Quj%}MyGYk?$@`Ok14DT<2FhvZ$Ns?6jGqO~uA#xHz#52tbTxg_ zFICd^rXMm<=y%pvpdVdtV>ih9r{6E=-3OxIz)%*%KsgQlSX(;{{RGXfvx3JNuMI>$ zhB|%H?{!Jrn|}1kLcd{Ofqo4A8oNQ(KmBe4<3RKq7|NI!D5s&{!PC-D(Ciu(e4hEj zK=fm%-6#Fz9Qi5q6a5kNOa2Pf6{2vi|A!uBZwP-AKRsgMpzu8Uy7t^lLvY z{RGXf;lZiE8i;@!k@K5EOlC zOyNb}OHnr%`WH*n>FBph(CpOE7kFL_>+TM}%6%$rj--QJIyQu}zr*uU9u7w%7lXs8 zJ^!kvjF8(Htch7x%Ah1YZ>Q>ma*u6 zr)7K@Q!!Y}PSNh$iR<6iH{S33D*DC=pq|s_KKEcj&WqZ;g?w=%l-4p!94z*nqKS+l zSQYdiNXxhlWv@}jFL0T4KY$MNN0Bt`W}2=a8T#J7^lSa;C+Cq?|X><9GX^X!RtJRd9&e1ZOxrpdDkFymero#Kw&mqeCluxfq+8*@(3?D`R zpg4NbzaPzKG;bmwgjU)^ebawn&E+)E8oam=*Ff|i7~UtS>J4~fV&L^nf29u<`VT)N z`U`UOqszfC5dG!yA`Dt|u1$KZc)^rAnbTIsoa zYhKTs{sU`Hr-9bwe_R9c|G@A*K?85{e+<07>96#$LjPfBM1Mh!es=j8tPe01>XZKS z%=LjN{TuKx_+K2o=--d#_RQ%&u;z8Gtca=pJ`l48(4YJt7+!4z-lH+_`li3q=L-GL zIwSfEa`d}rvcAAnzEApx*B7Gn|BTVS!T;juMSo`V!vDQBzh_SWfi<_&Kx^_pu7UV} zV0fP}+cWt;243IvSNdR~|Ijm{zaU3Hyj<28q9o|E|3wwmC;jJ1+Menl z;u+E3)K4!5!$AB`RrN{#d6Kp#|Knruzc_l)zaP!@nbUt@&9mI!Ve)^B4!=M7KQO%7 z2)svQ;Ppd)(Ps<&hnx}pP5t(9(eXz~(5L)CRP{;!*ClNa`hSLx!T;juMSrS9_`kR2 zJBoZD`7^NQdKzd={>L>C{|^lB6J(~z|1t3Tp}*+Eh5m!ji2kO2{7lvt=&Jjqe|UW% zDt{WtufhM~=tX~8u+YD^=KRd*FDmKN>(AHH$D90*Yasd$3{TF_81QUv?{>L>C z{Rf8k33C>c|6}0w!~X|O`X`(b{Z0M+axe@;f2L}E(tn<$?Lq$rd<^~t{Rh^(%ef$v|9fll` zvV5?Exk{_wYLP9>vWZ=WxgC_Hoz3H|zft`5Au9)OD_3Up!;?Fh>vqqXPTIo7A$_cKWzcZ8cM)cFE2I>-VU$N9ATnoP(BygP)OMBg6) zB>DJAe6_k8QVbdV=6dnmZ+Mp4@O+CLZxGLYhUcA=@Z8I`>O2B4a-+5WgaGH^&gs;m zr{2JI2zPHx_x6S9?!GWBH9ZBBLNC|^(?r39{XE}(_H9pxQrK%yw7M^XPnD!ja$cu$ z3c;ms5jdW`Roc5d`R(KPp5)$u>v_)UJ0PV|6|+l$GU%||02`)*r;r>O#CY9^)giUe z<`^Q!s#@^kSo3<@Jva9*`u!?)FCyP-c!q%+aQ`GA;EL~WRG|jO4k`Pu@nE$J_&uR} zZJ#5CO9^WLs_Xc%9GtXjVF#BM5Jxspij?kpc{F>n@vEglw?8tdF3C~!+I9n3Q z_}%>Gc#3043g->X?=kXii+*#EL#V=e1QzHbhZ|X+ll}cwP8tmLD2+t5ns7^TN>j<~ z-BkWtYMpKT(mJ{dV+IqFAI=G=W)n*k)j&o`&Wv^ulLUV0c^)7(ose0r=k{(7SNFxG zmm8j^wuc~95pEB+_lEzDs;6G8@TTF}lNDYyJx^%`y1=IisPhvB{IA0Go1$Frb-^{X zeDC#u3+E!j?cVEzr-YnFo%X0t!~3iAm+*svjJm>g__*Gbf=VrnZ2rDLx37`e5ncQ|{geH1&3B`uXcJGz2q{c7dYNW^(sIeof z-8g9CnXWy*jic09eU2kv!@DrFO9n?}Y~LWKsK>eV4fG~1?fDm-9Y+VLgVwJd(N?!R zU+dOZze+6H2W!!;xMSGRa&Z#HlYR=W@R61>DBwE0^V+uMLsFcFH%oV~wUpusv!M=$ zIN>ZJ;osaIPWCN{0oNDkZ@YZ^_PBH2)O=!tfK)a~bxohCz92|a^%*Gq8U@)7$j0yV z8S%-}LHR-df!?M4;P#eEfGell`%ttzjaT=9+&j5H5a)+MY;|QEGt3A9EBF(Pyofy8 z#?}JO8Fx~uGk7H@pJEWb947SzG!(@RF{JixFadjhXC!G4llZE>Vm~6W`v}llmofx0 zL1`_iG9Ee=8TSvHvHA=Yd#(M#A9K3EW0crL?!7-+bj|k)0e#|@LT}X{$oT0?jToA3|47n^bL%jw1=u;Rw@`uAJ|0(_Rt2USEmQ> z+6bf5YkST`42jslEI`7LyzEI%Eq^`Tl|v<*EmZEEY6}o&+rj}fOd>@=N}$MHPDAb? zlBdI&M6>UbktjwC_D^2N;nY zU_|mZ!3P+Xye(1Q7Qy@Whx{bU+g^Xb-!J@DiE?F8wolopzW0xq&5Gnm%i--mD?=-@BF$o+&-uVn=PWsw8I^g7R#v)*&b=__$z7wul!gDYo)C->i~K)3dXx5;O? z5@UG7;5T*F^()p#6l}P?DE`nt_3hrF~^Q_tl924{dga)`zxw zKXk1LoizSpvc&mwOzdvPGI&QpT!-enn# zvx3jqq?G#ptoGxdJO6+wiI~y>?}0=vi5$Oj*suqjafdoWp0UaqFV3@-Qx4}R;KIlI zDi)KD_e?LL4cT+|bmW*m!nRcS7R@P2F)zE^e@* zBw49p3e`Od6UkR$E@U(YajxFL_i_JKd>!XQd)htfr1tbxReYbU!o%6z-2`ctAOgDc z8fGgjb5gXF`8F-(wnM0!5@-2Glc}1~ z9O(Cq-p*nE(HJR`%nFziNq!5-!-+~H@-3tHFi=0dWQEqEOx&kjEI5ei5k$*JZFguX zj!}rOW6m~;Y7Ww|vz_A3*zC^ebjPiaU@$TYcjhUjM8*&;gUn@+xr|ceawp#1c}vJw zhBo3m;9j=Jp^dO_=M4Wh$tH+v$>w58d(R|=^`N`$meK5mh13Q5TLt<~nIE__Itns6 z+-QDM;IuF~tbmc32X%_u@po zY1p43{OiB3DeyG~zNWy}6!@9~UsK>~3Vcn0uPN{~1-_=h|IZYdxVWrgqGwUPMLFuZ z4zIeVl00pB`$T8~zawv)2z9@8BGk@rB|rJj=KbPMe!EVDy!^!Po90{G@(YkQ`<)Y^ zzr1@QuMxjIF;dJ z^OW6DQ`slBp_W9U5jh}PI8}8mNER7cEW4u)R3;oVDihi`gt{BQk17lM)Sq6J+y^RK_ib{B7kpQ+Co;F8up~`z~ z5^={REUc`lH+;jmJPWHEZQ^ZPM6H$GS!pY)t*})JgPDJ_BpmbSc9a&)&7YM&x3s`s zRC>kbGh8L5`3v%AT4v8IoHM_)$X?>K%+4?2V^*odHP_-SEH1ITUH0PqVhd^Q^Bk@c zaX9j4%$pr?lork_DVk>l+&ITx;F?)_L%#hw33uKw6GR2}V)f;A&6sPSd!vDe(89T{ z*{(T}PqOANv^ykS(cHpWE;ly|IZBJ2g*SkC!F>6cSDareaY|>9DT}*srrqr*EU>%g zh+Ad9!0yIbS~Ax@Gv6}DRct_?<1SXAbMuP}-SbPOT%}S<3m&C~MJ2AnImMQef+8t& z$xZU?^KV7Idse($Zqd&l=XTZKH_SKNPSqdV-__qlTJuChN@Uhl*Ls&`A}c0ZCVCqi z`U{d2(Fi7-{$6{2a59wm;K@+a_fLkzEx(<(#ZP`=zol(aci2zfTkszvY5NI}joX*I zo^+NNJlVi{f}a!EnGc@~E&P$;mhVBh#ZP|nEx+$P5_O0DE-e!$dg2`d)|#C#G909~0rz5Z|FV%dyZP-a{-WSO+{zgcG6Z zgstEmvb;qE?DY@gJ){%OJ$@JdGZdPR7Jmi)KrsGRVo!1szwKNE(ZsJv-rTPtzwOmg zw|v+0eYxqkhf6kZ=Qo_+liUj~;RU>{ru%8W)3{(H8`yhH*pql4=Q~Zp_$>ie*e&nT ze7^-eao^8-2*1ApZyrDK`-0ye`HA~Beork4g<8C!(8Ihvrdz&CV%+i_{#}ND0>5__ zla^oDKm2~s^s6CFMIYhecvA@*)Eo+RH-$o1n{W9J`-y+-PyEC2V*SM(PIJ2S;WQa0 zuJHH2^A5w3ci24;yx4eQcWnBw-#~Ewx8Z%k?aS|Ua3}qnwCgXu_=nq)ya)3Ocd>4f z=dpo(xTUY1<+#Qc^GB>WOOewtw}-DygibvE`EyEo2AJ{Z%q!^2-#$CP_@*8KD*g<5 z@E*P<{8?`M?BbpQ3NKja-q?r#oWc@%z#aj>kGITo^(++SQ+V@F4N(5G`-^{SfQnz_ zwwKH*oEuwY{0CXo@S;a{Z1~4pX1cE{nR#8000n1O(Y%>A^zb&~J7(HvI`d}~yKah* zNzuX8kN>=W{9Uu>6wb{rDw+wl=wE`RIDh86xe?H+_6d%&NWGNyEFAuWEOYI17}oU2 zsLGEj@8zfZM{)hXaVfr?(*v){XYq~2t~s*`V*^w^P5;vTC|@i8|2Mh&>QLQTu2NN% z(V7Ps*B^%cXXh6dH`g}XJ-(u*)Kk+~x~ObvX@zHTX?4ZY49lIBp3I76V5lz7lo{=W zg%)|;>?kRnJ8zCma&DE>bLP3-(SV-b6?K`6Zb@jn#xiwLS+&v;+}TjJXqu(Ajwyeg zx3s)hYTMQ4G@Z~dGoN;ab%#vbo_ceo^Sm`OB*yydU$gHTm z!+WPClL=O%hZib?>Z)Zps%sZk-%;(!EH5ixSgFF5W+hWpDlx$g=69L5f_ZdiCaQp% zy0Qw3JSrP(A#cdm1Zis)kyGhSXBMZJbGXqwb_O#XDm{O)1kj;R?&CA*R9r zLQk03Sn2WBXD+U2lxnSCm^rP!RLwwuTU1h7;x4v`qNJ{h`TnB1hGj!7HJQ_DN}05H zB6Y5OM13JX;fz@z=)47`mruCLQd%nDOHn1lq}RaKNN3;Xp7FR%B8 zLn0th8Chm=4Y&Im+g+6nwUsqCPhFj@uBL+gQ3sjR%DoK@Xv0cT0#z=Rd`%Lyn5oOb z8P@8A$yZ*h%2TVVptQQG3rRdqw7N3?RPR>It`)Ch(~ z;Tl`gP@`4Vnz0%!Ni^WxX|@Q*4-Na^KYr5E^hw{kY3XH%W#!1Q*r2|6$9fL6%u|{i zTSavPv&J4;scRHG9!d*Tj#5c@!^CZ*f^obw$))Ji}EQ4y>)K{cdGL9s0`( zQ3R66R*67^E09tuy-naQ1XX1NUZ}-t$!ujqLtTUAn)F6XtO7KbawAf0RSk8EjI1d6 zsyv~m&E{!XCP*aDxk3}OAXGwKd6}ou5YSXvT|$?pcKYtRa7>XH&oYqAdgu(VKiIg!m? zjh5QR>I!L!?t)Sm>NEzTmWIq}4W$C5QUd0dl-eB*DRTJ);+ zm|{yE(n_)}fZA;RYIcTPCJ2RqeotZYi&;t*WUm_eeGjs*nv; z1C)^(s9aiE?p3;Li*0;O*>{&^ScaM+xu^Er$j(rKgZ8-*C?cjr3aO3;8k_QMs_8@5 zEs+;4DKAse7YS8K6RwqV+7+ZGwCs-R8kQW85A;|hY4FyH*agK<5gbN)srIObtTG_0 z53!*%dGU%yfR5EfsJ2OFq~ofHf|4+a2?=Yww+>YR7gaZw6Th~)ZZS#bxC-YN*cVvF z*)9q$?6DHD4Pb9-s37Mt8^454JcdgZ#NvDopBaQC$ThPCcd08IIkYnRV-ga>h!s%EQo1Voic7YLRH7th&&hgBAv( z5!K#>kc$xnWJV&A8R4X(FuJIWbgRhZv zW|bl=WevoZ?!CrBMO*0P3?GInlK5g8H$rAkp;EV-88GQ-q*R*YLF`YXOLh~S%Y*t5e~DJHQMGBI`ZB5CHackloX@nYQuMk~;Lf$Zm!|WW%fTEE|B#XyPYLHENRn#bCk?h7ae6v|7Sq78F z$iW^mR1FYRoz6xm&t!D!nr|=3XAmTkv6SV(nq@S6hKf|Fv{uHQca&!;e}Z3H!CwL{sc95 zKp2~!NK`tz37&@PMGzO3UkGt6k<}4bL1~GT#Sdp8jL-8A3|a(9}#algvQgnoNMU)XCd~q|M7TnIQpdOB-Ne11(!oQCmgDUEF0Y zD(;VUtEL4j`bQTntLU$*s8s2;tEjcbE#&^b&pFSzbLVDKXt(|B{&&x9hv(ksJm;L} ze9t-0dCtqdQMr?s6&1}PI@rD5foDPn2*Z<}l~gGa1KM0XsZ%7_6iJulG^ih^!6Q6I z6&VX+mCK`Kp00&w+dU|@cPoPtWu4Qxa&{|)sbam5oNoA6tTHNBl^9jEej^l#7~zVD z(HN;UYHqKrix{=_D=LCUQ>ZDj+-PcQ3NAJp>KiBk_r=jg#;PX&3hYfHksB5jRT=e7 zf?+fa#5!XG(O_dO=7RFRs;RNoXzJ-7ii)U3Mitszv@sTsHldwj=UY5i_Q%&nD_Yy{ z9%_Z(Cs@sJGP~Dc`!z~|D!ID;=!)BejrGk9X#9%l*fE7xQAZLr7-)@J%qCaF+M}!) zl9KwXWEyHQ6|0D1JcX-8y7kB5E@BTDTl8yV#&E2^FBo3zFP=MC%$!HO|qA~`cf|$ zL~L!tQ1`&t#}fl&$%Q&m^0cFE)K1uz6%`Z}+<>-5Hp`$<8FOlJ4A@ZeP3FcdZfaPV~2mhAG!rq~k~c@lu4BRuqDbUTj;>ojVsR8yMWlHB4a9 z9@n1ZVr3#WAPOPZr|{)6YqbeCLZ1CKv_fyn*-e)dar%*<~HlXlrX@6VoLGMAGsfySj;fx$YwU9UPNDNA5!xDn%>Anhzh=@U~n% zc&%D~TS{|5FUB~rid9C3C4k2Yny^}DI|v2%AC{Ci*0;7B6B=sAUYtnk7N!s8wG_^> zxTZ(?)tsLqirm+b&%?b0^VfcFtL$UleV86%0u2mNWqlp6JuEg|N{H1$SWa(S%<`{s z9E48nq^ZS|^o-gSNX6vp5+-DKq?#eQaCa6&`v!TkNsUyj4x%K;mHN8qVl)@Q8i$ug zA80y|Y=;*RQ)hwX+5rt@tysX|c;w$--8txOL#Om&Vh?dCFXb?=Mvq2X{R5bC5^%P7 z)N(~?=~A+HrOMGaD0OGIkCgWraE0ZHC$`_QSa>I9+RQ|(Xwa%v7YQuq5-h3n|w#uT5=3A?)-h1!$=D(I; znpW3%?+a8#7s2OVIiCxGoK!hP;u%s_`KBu_)2ay9kqd864)&%Hs}VFkFLFK zC#Ka{QKTgrlrtK+tsywyn=iUF&G|_Up;cpal{~^mfJMS9f&vW###s2|8A>Zb0xD|l zPQ(Z{Hr8W9Q~0cXu^31``!-325?|yGmD_*3mJrVL0x`5{78eRb;2V!bef| zIfA9d-qyZ#Ua|H^^RgtZ!4JglNy77?)iqpd-II_`wWU;_u=fX&pSUUu7o7U#!duc7 zSEsM^H`ZZcy42g;H;4fVi)5Jfk~N2&=t;)%u@Hy$gt2*;OtPxJ=pyc)yh_T2w+?@) zWmBFe%YA@otg8bnGBHqUrc@MeuGfi$WeO(U>9QCkAMb+Qazv3Wya7=}3!l7xQuV@> zg2|giTCB;@QY>}RrD@f~_>tXF{gq=wX=Q6jPnwfk)6}KTguR`~KAgUUQ;}L7M#aJm z(fK%9z;a}3a5)?bdPPg47J+5iL2Je7>JD!{T;A^9Bo^ze%2P`dS9i>Jrj9>XVP9?c z4t3G;D3y#%b6Wf3abaRRLhD{@U!$KWK@E(sp(}GJ#iw*qt=Yb_Kp`@=0Y66W-gvPR zC|9nrNztb|V2a7=TK$A_kewT+{n+4D*EQ2JWKFm!(sa9{gRB0f;(6~_ksguG*42cu zTazABt>M$WIEqmx3hxtL#_FXOiwo3DhZ@(%XgI1z@nYA1m+P7GaUDT_DC)@&(}As7*Wa0(j<+ z&M(f~rq%`r3#Lctu%!}C4kn>1t=O$a3j@UD22ktvwupm#DjzzJDb~zj#-yiB5vC(T zDs2&OkOzEPLQT^Gvutky69JKfTx!17(qp>lX7FCvF(NIT#iBKGaZr@hEAVBXUDSszj@ zhbj^!Kr2QHBnclJlW5=wUzj#0qzgz4q>J>$s&h&ofhN2@sxAEA(|vc0u|}sw5zz@m zJ;}Yh1>QDv@z$Q9)^$_^q7Zzh*4{KEhFrtz`jgYuI%vlNl*RJzGQm%6!je`kC8h3k zp$w9w(x}>j2EF}*34nmX1X_vJKI(G`{IDxTD9}9L+ZP*B=525~WJRgd0bPoHpw>QY zpm|Y8Udo8p)X3{2gANpBP06TSdj-?s-OCMBngO{@l^oz0*h|ZNaE@NsF*h{-Fh)2RwC&92)FwGcgQXrs4yGqRyrb97n zs^HkbNmEX2FJn5|6!G#H>gC-Zfuh&}Le;<;@!|NC{U(QGkTL>`5)kRiVMwN@Af^KF z97$|-i9tY!sL{NCU{J(H-=)6K`pEc-moWu7atQlP`x|_TeQU9?EE(9QrRHk%_n{33 zBT>x4Md@%$mRnRDTt8vG=twPc!pswr=mZDNScWe?w6T-q7Dpc7HtgZ{y)6$pg)V2g@ zW{x#W#7x&z`H(WUY(JvEs4L=aof@n?XNHMyx9g#@5h6gTR*B zTYCDmIw{s6MAGnv7TS_k^)&%68#F?7d6I`rJ!W!%MC2$(*t7zxauSd>Ki#_~hG7Tm zHRvm}B1NePLy&gZgdBY_Dds(rIGnGKlI6cSKKK(fQ})Oux-nvsqR(PDAqfD z*Yym0#bSf)QA~>X`SxKLH80FE)_iOtaZG#C9#%6ZmEtV=gQKR~s>!s+VAdEPyZ#3@BpAcaIwE?+U z0-fXzJv3hGMf(-o^cbVkT9Hs)`Tt_U45<&^Js+Eqff~6wr%ry+{C)B*L~ln@xPi&O zZcO>TGHV7#4IlQ>oH)ZOO z_v?=DXdx5Y)x`G4%QbR=UKzpmb@N3F=6B}g7^>2y?yl}>&dyMYKp|c zq?2`V<>N7c#{`l?Bo9eyxK^6;GzulQX1{uvpS+Yjq)^^D9=!LqDwBX z6G-8z=DJFIt5VTKytI>w)D|UnDP(DqfO8mf#hCVLEWgOA$5cDVJdKJWYQr!B@SbTv zB*7tAR1~TSuNo9K;r#*CEongIdKN=!YjPN;Z0J>5QIxirs2pQh9g61hRL8?%ak-suzf_j&h~37w>XKx>#uSgAWp#mjvrtq z=2%~IrX!6bnmE10jDZDP!{Vyy#_P$LM-qmqr7%&un7d3khMTr-oMG7*ZVPt4D?{PB zV02k+L$s-;J|gmgWv>dag2l!1P;(G(Tn2)4sH_nK3N4qiS0Kly&hFtPzuzkN(`Y70 z-ZZxuRI_pyRLEp*1MtM!5)F8=xO9*PUPo&Ems08`@YHFNlpL6o%Q@qDVYVphYwy>| zX%+s(@Q!t$j9X@MpX@aRChVzEzGMgKI2Ya1701+`PUv~BxkfD(=Ytnbh~u)wIAWKo zZ8cV+RiY29po6=Bm=8tD z_Ni^_T8t3F2}Yw5tF`PtDaYb9^~E7GrS4Fy^=>N%p&zwuagd$H%?U{>WiBM@>`yA5 z%@-i`G5(XEBzqe{M|N0%fMpDn9p_BN`CyC}f-7d9;*M}7B?u&3nbw=B8ROh;_j;-a zPGNxMo%-44VQHIdlwm0j>()2oPzJ6lak5`bH7HeV=cX@bFOV!6>eNEH*ujt%n-0Lq zm1=QF%l38x?KM*REQh}I+H$E-dcR??ryo;{&VFIqgl$lJ2d^dP*rK8A<;hH2-V;-Y zVWDq1z#?L2OJ#fqPQ2Y&fXPmJ3DxYUzfZMGw#R8_)NBU^(H^WbY{KghBQH9pjW4RT z7ZW;p#z&}a>%dDUdtq4%(owBM9V`k zECijI&6Ef&D55z=A;l{V=sS4NL7vwhjMHlX-jvOtzSGguOOqg+ffScIt%{=&P+zQl ziD={?*hR^1$~lPDyJ9$5gXQXhHG>7@4q+W9{VX(gG@7vHhFxUjM0pCcm_ARIYu8Z< z73Z_cuI35mYvzXre4z}*M@i)TTb-m7CRstv=D?tuPqkLq9dSCV`mf$ALqp-M@80Z%- z1K1ZXUMEiEMT=FkHnd(erJK7FiTGe?VIdBk3>NgXV%xF{M-~hEVu`|J8!%56UO(8M z9B7XfioNT?>q+ny-UKE+=~Sw%0WIatq4cIhcAECT`D79d)*86qt?i;(DK=E0mK7Ur zkBQHeM5O_s!(|we&?wU4tIi=qDY6w2zBwI5Q_U#-EhFeV*fwx?{(Lo|^Mf_nI zZz3s9ehMER;(V%59ScpJ_7rm^ICS#xsFG9X9_74b;>kx9j#eA(?O!|CW;@VIxjEAz zIZQS#D2I1aqIh!yU7;1{jk_>ti8HcRdTIJ&Nr}#@!K;+7rbO}48oVMSue4K?e7X|8 zi#Q&D(X3ZFqEap`-HeG!xwss|3wo1@*l=_(j+e~ju}{WVocNU=s6hebOqb40)A-w# z?C!zVqkX3575+VrV5&hK3uWZJVD0ra_FR z714$CFqF~4C*JI?4$?FN^I2l3MN{D+;2DRTa7F3OJVX}{_~$k9p>Z3Qxizt*m@|XC z;;8tFCdGUwDwZSBmFVb<3KEp&t&@lHI;L>XR7*^YZs2_f(mcv@X;Fc83ELJN?=sm# zffM5MaV47ewTge}m>`Q$xJtXD9|wGUTGJ9BYlxwP*M;zUM}Kd$(?U`BA97(6?|!JY zQF{W|(!qA3m4&p5QLz*t#E_?4-o$Y;T79&~rF+Vs1>|HPn*K!yhklsmv!lZaQFu2Q zBpeh>MCF@9_B<$@rvRAurRK{@hQg&^v$i7+i=OCIA(B$KT1$(o7cgxqP&m9Vl-P2{ z(-I(um+BWX15s>7tMjT#h~g_>f}MF4B&bNAH;t^fMr;xkZk>uE0qOi&5)@A7Wm0d4 zSV7{3b!XR9YGRjQ-KZGK=eGx|`7~MpUXjH(>1-qec|E!t{Fhm>srhC+PWxMUlatIjJd_DLh4xj^)H14J{%*Y9eD!zV zq`b1Oa4&7a_l{n`{p|R8^Au)|9iTIc3}X*H<1hXe-*euizcCyD-2oZ_-2=J@^eE`O zf%E1$;)Bk?pSUVcoHqlYfwkw&F3=9pdqMYr?f^Xnx(9UQ2hW=)LFau4@h(Ap&|=V? zpb?_?oi}%b9@u!^JO&!rjPC^!FH9ibA@88aw`#?{< zaNf-GAl);N2Tg#k28~P`H@AUyTsCg@;5$(-T|RCe1l{-!eBTQdn|R;2xdZfY(YU$i zQt%g#n@@nwD;_sr1PzponZw3bYvXEa-928Te@0@lognn!vZi5}@<&9kCt62i-?}d_(LA@gGKf;)5FRfF3)> z%_~7)0&M^d;9FrGpvNB>H-|wJpFlj&>`#uH^X8y@pF=ok;`8{H7}38$dZ6?6BK)1u z6Lb~mo-aTT(Aj@GZf*fR{&)EP80br&r|Eeg@W4mjWY) zed!;^&GL6c{%gPqbl%vw`7CJ1lfdIW$nPlf1D*Fh)F)`<`{U+Ipow3goL3<~&=SxC zzl46E#lJy&q30Lyy*Q%(j(YKe|J!lX2b%pm=mmNhbQts$=uV<%AU79!{R#Sl9tPb3 zy5}tPCjP4ke=qbnH*VexntdL)fNq?E?`VJ?2Hg!hdn&%sMSRdBpfBa(+aK>kd1jbq zKG9kD<`?L^OYyxEdImiUdJ5Dx58p`x4S-I48@|y2x(_q~dhKPVxdZe7=w8t5*+?IB zHt4gUd){H1tFK17??yQ2fot(C70}{*d^-$(N8teI9MHr9)9eB*F2(mmKm(vhK~F6; z&75mdjxy7%0iAsdzLN&J2Q&eC3Umu-cDZSefd)WNfNlhR5p*Z0k&kCT$_u&&)CYPP zv<5W00{MdO1l>pc0P>p;y@L3oWT3OFOp^|jBtSQSz681pbZ50`9tJ%HdJ;4cLO$1_ z-GVLv?Fa)W(8x0A2f7FJAm~e=CqWZ6kh>oFftG_tYEd3~z7^?$&cmN)I{}(#g4_bo z2=oL!40v0(vlui08Ujs#t_D2}8V5ZNx)HRv1^R*>0)3YFpsV1@ zC))7M8PGkT+dy9e9Rm#vp&Z12807#x{s_tedTJ-iu?Tb*$^kn2lPCx1fk#me(Bq#% zIY1A88sz{@>_+@etW^I0yTo3yb;%cXHJF3yUa7k@5%Ffa==E_8a?T;=EIY{St?|BoZ zR$Rop61&Jd|CteM-$X{Kcke z?kQQ*0c~}zJ0foUC}T0iHz4k#@J&7mD$C)gas)hH*Pl_0fB+ERI zGB8CV9#H;(2TD_&9Y@$4ge|2ofpgn*Pfj?u3h0HvdI{kr2tP~V6`s89uCQm$Ha99@ zb9TU!KQblY@wwJa_vD8>UT6b}3QtZb*M+L8v~fh8mIKolk=8q=%DhzB>mJJ9K4sff z6#O2SEVyCRKqLTp`|3F&TAWdVLXoEAS zx^KxsW}&A;Gp3>;#3|GJ zBhER*`3B)D+Bw>mC|_{_R??ADuUUM-0(M9raZ0@%5vg zkg-)y%X3{d4ixG9w4}(LHWHOzpu@z6tiJ#kDUp`?zr|%YC`a zb0Vw8a}vMPS$@x%tbpe%=myvA9)!-#Lg=jsZ9-_k7TSi;J2I9FjUW$Y@xd8-_HE#Ei5szQTvRucJQ5`a>Mn)lIRLyFHk&&w}V*|lRy8^M6*Ye@NBr2KM(R)P8{ zoqxhj1dI@uCPHG5lNcdT0d57Cu>uI(O`!&b+T)Ny?mfgMb?*SJAkG;#?rzJFN*zK0 z0r`)C>F_t^V*ZYM!}SqzLqz{t4gMJTA0a;4(>7O##)=v-RxHCu-g#6vDruT;XfYgUpd@$IT$gh;j@GKXeWr%PBs>S}6?U z;fM>p3mJIvxEf&%`QzsIC``l?V&KwI8W3{4L>MtY8P@z;v>imC%LcTS$K8xEUpXMBt0^ zg>ClwgfOwy5Et@0AphbA#?7x&y$RnHa|G8vl1cEb6o$c74!=D>m9qsRW01eMW!(HG zY`L?|r2I+tsdi_%8?!un(c|}{_wPmL*`4KjG$RghV7@9O_GhgEt$?Kaj?ClVa?+i~ z@|u~bpU!dfDCsWRFWS4^w-xvYrGFQ9J?9w?VOR}&hW(y+J+#O)w7R-I!vRQzJj2zV zcylHp<7Q-c1bJt7VXX-FWFH?Qzj{0Qmh9ia34p!*n8UbMknYs?ay%Fx5ntHrRNr&> zroyLzZ|d4QiMpZ=BS`CP_qf?EhjcI(%t{fF za6N-Kk0MST#lc0qZ2WTqJW=;}uEB2(coD4Cew6xcsy$?$r=84le{ITSEdss(lITKu zdmbD&AHcn=542C7cZvEy-{^8whd(#w;8dV6RAVR-+BoJJqU|3h{gHNd4$@XO#?~&} zC*9OAFs|Mv8;EE;5Pe%_Hv3 zF412~5a&47qUrB4*!&Ske-XBp`peT9(ZMW?`tC-gwdJ94^Y3wQ>$_rZB77xagTA}c z(RYQ-B>fK~{#nG|M)9HkHdiH$vsE(s{2B2MICtQAw74o@C= zb6A}a?O`@-dp_37V-$vq>_a|yw3hx=%eJBZ?6xg6HV3e{vJ}W=v}dR)BZ0KeVjZ4_ zJi5y9+X7zpBje^X#1Lf=zJi=r!bH!J+E?VF&+@%!*Wcxae{IiP zE`RQoP=)qlj^b~mh&3%?L*ay?QJ@H-?(^W#y@>Gllis+fzUF~9=VRmMhXe<<3bX{g zjo@9zI%O;$rmJbifyEc~kGNgC@b^|YJ;Hknr3YT8m7c>sRD1SfHE6%r^^(ITgmd!| z{|MqA_&D}BC{59Rfa+$lg{x#8q3H+E-wA`4D1YqxP@6Ft$!EJ07~Gm$&2={$`%b$M zUPiiPnrn#pz16qBp0TMTGb(Ef(%Oc-C2TQ?i~3%I(g%-pp>Ygtrk0#$vb#GF_9((u zao#+R3tJGPd6TdOZWrp93?V?0hHzP~(>%yI{z;^_@6mDdFy$rMVQQ_flEy)-8o0V; zVwP3)=kh{`)iSMh6d&fw3mzLcZ==B)>1AH85ZF{>gmwKcBRH~;-HWu!KRa#~ah>xV zQTQyv?!l(O?!5}_Fm7Ag(RAGC!0!o)kNvv$6GP~NF+Q_Rs;2deuev8u#$A=2F@)C~ z=ArWDd~w`NA{zrWmA2-EHa-Vq4w_du7jQ{4CD(RWBVG&QT}$N?eGU4JxG@KIVd-iP zG)B#1RKiq)N9cf9)7*)8s~#UWFGXLK@s^48g?&2G4;Qto z6X5Lu?@3}nzY!PJvYcz7`HRc3CO5|iF2%k1(6~87zFP?MtC4A;nQr%T_o10sl*Hl! z7ANsMJxe}|@v{Mz6`GffF z#(w1nP?QOyTjfl*s|Si5BJ*Wv7-1oVy+rX-eE@Bg*Kx&Ih(ggCcDZXq#Uae*aCz- zOJl6^wd}tAV&Pf|-=6Gi3*?{u(YX1m3}dobQxaJ5{H(?GAHW0_4!s{1&oXYXJ`0f6 zKBTqbCp@N#_4WqpPfZ^0YV^TF=uS_=jH6w^NrO2xo`w8L$p0AkbQR-w2E2Vg#aKoK zQu^EHqwosgD*~g3c_C4*apYftapRZRQ%5xNm+s*4vK;&?e>HB_5+4`k8v$<>cy|A( z3%mp1by{}wHR>+zzA5t<9uj+12awi@)8l5Z$Wi(TN5Ct7e%yQ|9cST>rhK2}a_-rH zX>dlMD{{M#=4=>&)7a-1>$qrV+i5PD?yHx707lvFsZ`}grJ1&djGA26hdrSRPs6RA zkRROu<8WGx<+;?iHXyH?ah9Nn$`bM9tpcu8PrJbH0AJW#=&+4ka<$JuyJ7IPU~{YN zHkYtJhIsoB56g7oBHk(RJ_8=QkGQCRp9Sx)!TW3CU}viV{uwn13Y(2{629M#n;)bw ztm(k1!ZbWbtabSi_AtU8q%bVvU^OiVNf{yV=?sLQ_;H#-(3}@736G>h7s87XK7+z> z-Ag~p2fPtlulXR2rDDCnQDHG>mQOEbbpJ%{|u z|1fT@x7sA?IrI2Qe&yNBZ8DG>p!DeM$SdRKLs)l{wkbwwtst9NLwj4xX-`D7KiBZ| z2|b)#GlA0%r1M0UX|BaHU4-2p@bX?Zo7Tx-Cd8@WC3Ww5nzK)EsyqyF83csI{6 z&6{y=toGzZ*=`Pl-vNFZ@o|wZ+r039!NbyxxQMsg3qE+KB}??r1K@SN)0BJl&;>b% z$$zH4dkkSc2&247PkY#l2#X_ZaViYE^>Y51GZ*a%VWS+jnbwQMKKwl>p4@t`&c$vT zPx9owEH<`0#2QBp(m07U=93K;ZPKy+mui!>o*h{$J-fuZ;&M=I<7Bz~8EtY<%t!Yk z?E_bs=5wSU+Rj6+I$Gbu9G~}7#Jm7gZ>*Kl@M+&c@gmA;#P7HgXHGc&cGog%KDx}a z-%VK4Ijr4~xt(NSj|f9AcrSuCOgtAB>_PJJD*-?9Zqxi2@ln?8u6jzZ*0Vq7gVQ|+ zb3&f6oCt8CI_ZGy5y;k)tgI7QZ|Q4pK-f8iHF4NxD%S{=OXfpozixgH&f-wG7zZ#9 zpn07S`-eOT(1d_=Ittm{6J@JBJ{m9(83RTQWXYE}3)$?eO!HS(y49ZDF4qVad@v9! z&&4V}-H5pc$|ybBruiu=o>=3n!%l_^dj}k?I`>xGW3?BUEfY5XB;q}ac!UpKRMwYBKk$Tq!@Qhp zkpA_ixtxS>iSmON2k&o)u^jt-uAO47h|(xQST@c)qC1I;cs1Y|;5A5=$g2gsn;pCa zc*73f7Vr*$NBx*CO7Btdj)4avF5>OS!;22yVeoPmn&y2rxf9?ez!Pl_e2V)bcw-JZ z<65X(V49t_xU<3A0-jx$eDL;w=d;P(4BnVct{hX!_zJ z-f{3wIC!VQd&$8&2VS1fG%IXz^PoTtcr$FgdEkY>i!zVebqRPo!4sIfT4qc!E}52d z$<#|O$;%osE}e1Tr87TtspsBHXHgp?o#?`PLz5v68Or@KYGXe~8sst>v$BVFXHCt^ zaSi3?UE&(@F^9@>(XXSj!UWaYWsL%Xu_rn!-NUY>hsFZwe1>t~^V0(t+H z?A!1VX-b5;z_BILcg}p^wJ25JKJXTRmsez(%W!YmQnAK}BLj0_1W=jFdAkL-qTDTr zvjB0z!Xc4ZB*5#!Io#U_09=&c7Vr+>OzHdFf+cv5f_JRdG%sBRS+K#ij*(n~K z<2|?rw#X)T0=(nhIJ-*a!$o<#2wuzGIInDzqcgufy*O(uq-4LJ4PK~^`~9t+EiTt1 z!hTU2K7>7sFnjw5fOi7CU)b`Zv%?4Cruj2Ymx|v5-iCWp{h5NO-EIUw{}#MAK@3kG z7Sfl^${ottV7&ibrPnQ<_g-RC-uoce0J(Bv=u0E;KM4V9;1_XG*X3>|r0<8laI?+0 zi0E2m5(Mz(u~>pK=uZbNAy2J!?J)kR4F1SW_YEaWM6B*5e53yIO6qU1Oh|Ryl-GoS zx0ungfLlkUq%DVJhWl@q&&M8+bVnmU|6fVpLbcK|Skfy8A0C3Nwyc^z4{Hu#3c!sWAt zr^TC0|ATK3m-U?QWa--UNW0zk2IHN4gXMdS^Hc3w)rYDFyK)qEfaSmCh^OQxi}wqb zKl?i3sWgecy+6I*s<2G?sW75GN4yJ_FU0aWA6JOjQ$za{Ru^kK>1^vMpW``WTY5SJ zIOgpRJyn8MJjHO(0gmTjPdYAannd0if3jz_MlIIkA*9AF@h%0P@tSKt#XZOke+oU| zqIcBkQvF)&<>Gm|;2OqNjEh=V;VELO9GroIuZ83B^wQwu>D6a>;k+MRioc69Qs%vj z6~9D^iFF^kJ!eY&&v3wbepcl;!_WIU{LlPc!0EhIM9=^A{J;FIYFs+q|MmzdJL_Gv z{+@FfgOoiwQ6!(0T|LO*%1$j?EW?#u?&9#*Ti|berEY)rRruc0IXQxE>e*e}{NU-R zO6SP#wL&j7zAC<*zAa~paoZj#r}PyITs9%^K zrDxj8rg2~qestx{8o@%jk>xHrYnrc)sv*I^^Zn}i@3J19n{AYn_&)l_{w(5y_lkSW zFkgM9kizMTkwQ6n3uve*R|?~vhaTKr+?DS`eg4oYvW#RE?80fdp~nW!U(rcpsR5Ab zn?3(m`EIZ(m^ou#67{OW74?4T%aZSt?R3YGd>&gWpEoew!PIxN9OBSy5lK+UY=PWmEM_qSubYbh_$#Bd<~B941Suuxf)CURpzIvRRvyf z{y!~U4=8a_^Om3^KUUwGU#VxJq)RKy4>Prg)4l0r;F;oWXZbU%rz)Qk&wz^x67;c& z`CU}`zBDnONKfIKmWk~lFGu33^i=Yeo~nXvap?AG&QHZt!B#xQ099!c>!%a-yr}ZM z@;dXI@iW=JO5R}kS{(6IaWa)pg%Q1y^R<~jd+?<9K8|O{iiA~uPV*6D`6i~egwyb} z@kKp!v-}n=pDjEs-eme8e1o{G=X@ti*QQ6>?Y1`<@8laS-(#GgYS*ehR6W?0qp$-k z|1C#6B{x~TU$Fey*AY*pN%ZYMPq&{cEK`0ejHu5M??UAZv3$-Y6YQ=?_JZ?&j;HWc zx>$NT16bg8hn^GSDTad%a6AXw;Y_4LH#y|T*l$x3-rwyK<7mrslEz<<)Ho;Ur1SrQ z$3;BlXC54s&&p5TF(jW=zuudW&lf%aZ%Mb?Ev)dQ^Z)y0`pVhcwO&3e^ZuWn|F4tj zz18#olW|$@Ex*m&aJ;iWFYD_vNynI$UoM|jy`H>BrlaN&yAzJ~ohSWnC9kOJFX~xS zjetf#BcKt`2xtT}0vdsfLtrvLYBIhv)yd?PKj)P1WQLl5TI+0a>9@|QY;XKdGtOUr zAhRDBx+|T(pZ!p0J~>e-cb3!H#q=Q4BTP$JF2r;d(-RzinyEAW3Hmt&9M5w&T?gC9 zpM>v}d$XR0Ilrz+^4&EF|Mlj-L-S31 z@GPkvG zV8!A2U(TN&mh0%5BE1gYn0WCS`y%SV^y`TGKUviKfW+O$RF!rA({f)zt&dps@-Eqq zt!HY?xVA`QlruGWc_6Pr)}N9uUnbL4Vw2GxN4r+>75(kk)ZJt$r1RDI(&895@EUr? zOQo*XDe`tY^mf>TjETGf=Arj<&c4j+9|q%T#3inIw@%VO&OFvc<7wtqnu&^?aICu- z<#IgU!24f&KO~>kewa!@;iI0rSYAD=cw6q1@rRkJ@O*wQVS1415vC`YhM2BmdXV)w z!c?Vqv2+)w)5TQ9+sn^qnV#VE&oVvDG{+I|wBuQ&=cIG)mpJ4wb%v{a6~AN>ITe1f zH2+OX=VJ4FtL5e}-sRj*Pc}$gX|J6w=e~W5qg_fVj0e2GPkyWFD`fNbvp;%}=`N<++GFri!hor5`iOCy`U~Z#I3S z`T1B+?^~>|??U*#*?_#o>6LSN%DJ7Y?6M7clI0-VXVt#*CTW+uZRfGnS_0YYVLnH; zf$0|8xiYoqr}E51)wwh)jP*Rq=X(@Y_P1eu`g(+lr|k7v4xda;$zKdrn2@Z)OkPa% zw^YWi8)c;IkIK{;uJ}Flr;Hb_#b0kL!2gSkV_e_rT$6fM^Xy-8xbs=zeVoJ9ez1C0 z`>ns`aObnq2Y+a;P`+}eh>ZgwwO$qH^I>C5^X|*s4wT$if0RD|K6zL^>r(kS z(|d)}n`|C4Std$vXL@h@melWJ`b?&@o$1Zt^whcbOmQ;t@VBnpxF#0Lwz8%#Nz8U? zFY-OWOz|{NBcKt`2xtT}0vZ90fJQ(gpb^jrXaqC@8Uc-fMnEH=5zq)|1T+E~0gZr0 zKqH_L&W1YE-#Z28GuNh5 zgTtpNd6qNIyjyU-cRHP_bgcA^_sEznlKNIi+Om`RoQ_+iuj&6U5%_RrdizuD(#ZRw zXqWeUWcXB+j@oWHm(oe|xFIN-!*ax?cxN_WAvjKYCCe$A$IsLbRbOFN8kx{PI3mRp zZC>>c2mQ>q-!9To)Ud@9`Kf;5px-+vwNca_kFYuTC)uA4PLcgX(cuQE_TGmiRq?2I zQ@oZdxL;kLPLFX%R8-+fTF|e7@pe)#!szmfe+|PKFV69tG{EwTQXX_o!;kJKE1#;b zEhLOf<=6CFqJ!c&^;6GY62|2f|EA(KaJ(6RA=`_Sz7&-a6jgfOig<+Q#a>G9M$T`t z@`bLGDJsg>||U%yU)pl8s9ZT+&G_=-v9o9lym+&oM5}oz?7p5bZzK5 z+#+rs>ngj;{H8(kJS5#-4eg@mQ=ayDSYQ0GF<7e z!cH^(>e(5ta8mgwIYpv-IFT|#JPW!2zmHkvywQtf*^%2f0jc7Y6 z;ZSx-Q7@yUsHz9Tl74ZnCnpVXJVi;CuK%rebi*#$f6hEAsYJstzLo!1mK_s3_BTEf zll@)EeeJd{3Aq+dNAX)&PNhE~oaG<=XnMZim?qQ9La!yes`NPKkjuMV+HbpEq5G6Q z@h<%LU!FCUJ}H`IxbTp}@rh5*>aq+6hpT6mZs;y)2Nho59!%Lk(pQD6^w#yJ!fAX^ zep~!wvfTD?ilg$`!Qm>M3(@^7KgPJK_^NCwT}p?_r1DqvwbG|~kh*4EE6bzG+5Cmi zS5R2VZypxy!23>FFD;43#dGQPQr^P}>==@K6+iTGi9>*?GKNY{<*TSO|KEM}>zgRd z>&QRh$p11C?E-3hI)vMfPss8q{WkEk zYPViTJ5%kWEBUw*k$H3fQ~7mWCUI7J(QvW_v%Byfi&v5wO z-G49S&+_xh2I+SxIVV;5JIkx;U+Hzsk^h;m$b5`_lIDGOS6aSuHi6t2uj6A6i|`h< zqpJMMew=-WY%d$GG7QsHwPDk?pfC{|Oc+g}U`Go#I4-GfXBzFJdF;NfRKT5irsrMy*X6pSDKQr~d%+E}{ukbTd?^%9k>isi6Gxh!l zKQr~d%Fj%_=lGea_dGu{^^Ws1Q?JR-OudF|U%Q!lv*hy;o_C#KYWFYf*r|4?=4tjY zy7$~F@jS@ssQHmt%rtki;j9<(&#B_-1V@$`Gjx)XN zD>7ao(`u%-GhNGc6Vs0~{cEP*Wcm}Pzh(N~12Wy^Ojj}e2-D9q{R-0~On;)Dzb51V zf~n`9MXZkayt|w%?c}$lwt!LWHbQ9ChGku)t|7H4XroUx6?dvk# z_cC3`^cJRfGCjrg9MimS$asBB?_)amo01=4+QIY_OuxkR5L4Ao=BgXtda;hL%$WJ= zs4(ej{YKeYm_c!MFjeNTyj-?VHBT(zaJ6nflb@||A};+IW&b(YxP)(1f5_!$Wp|Z* zR?jM3^{o77^{mDzmA>3vFpTgXiPyVS0Mo0O{+@B-sW= zQ&YGiToaDmR<_8ftgoqWj078N%Mt_0SbKj@|A4V7P#vwTud51IM+4!;rn16VqP=jq zV-5Wl_6*;XC{-MBQ(BlD94H*@Y8{A)sI|em=4eA>uqwQ&jHDMDlzzC*AE|GQ1}d7H zq7D8?sI0IrmcX)d-(Xj=FcKT+?e1$$^bZsnHI-3+AkYXc%VLAkU{gVJq-tRavFrS` z!8Be|Qz+_hj)bC3^_9!Z3KPBY!ok6=h1H#r;L4S?J=Il>t%a>?Vtt8%q8p2r2;~C) zh(8*tM?!^N{k<`$9vdhu=;?27?XeYsOFu!by}z%sdyTz3&CTIJS#qGSG@0z~C|zp2-1=RTKs>@=1(PpcWHlgm&p_!M~xjL*2A>$e^XZMWyYw`~CsJUqt*~B%MiM z-FAPMb)RTW$@Fx!TKt~%#kPAC5Jjdmd)D`+gc3ce$cbUw{d!q)p~Q_T{`&5?l~9V? zk-D`h+%u43+p_7gC2h-bJ+M$JChQMw>x-;_wp5CV^!t=dA|=xiYqO#b#Cxs#yKE2- z+3sVu`$60NfbG83R+QHEn3d-G{uE;E@$S@v4Lutm?X4-*hPqR#4GyL5J8bu{!44~{ zyW(ra{SBziyW+9bL$5sq54NB+-JMpPwq99@6hGc3^Aq=LZ1)To@e^xggQ5FjoBXg{ z#+H7fyEBzpyf3BS;M%l%Sy7Z~uT3c4F8hMu_pi0I?zNS=*Iu;VBAd|Nsr#XrO;P_9Z4yMXKkivAJcWo+}&K}vF zDV^4}(jw7)XOI0pmFAir3yF@@?QnZ4r{N*lL@1SYHqF{?rH%Eb3(!7{zw$TxLQR!~Onz1t=fU!3B{QyKKHL6czlft2`AD|BOa zKQ%vfA5X%9^TS{qO7s2jU>qeA4`R5hY;J6%Ay|!&7|0W9Ac|rnvX8L^sexy(Fh10m z=U)k8R>0*Kixg$~rm7(eM^uhtaWb zvE5A(ZkHI%;B^&9udBf3buDVWspE!@wxXi;8yC0UbkpL_PG4JbQRkB4w#7FsDYDD0e^8}(G5$azlyOr96%j}tHPE32)R^t$B|s3df;2*zm431 z`kI^+urd;@3d7kTue2aO(0^B~Jz)gGP4J6u zD=YQkv_#E{8dMn6iv(+e4XC4Z_m%v*puefP5&lzMBu!~@!B<4;8q12(fFL(dFdCat z+}a@d=MD$SXlPngmaiJueDCTzR>$u2EnS@~U)@#eT|KnAb@iR|K8OLUyR|Rc-ZjwQ zpD4XPe_k46{)Z6Dw|Ma#G)@-vuD(;mRy-dVrRss)8xj~&3<_O6&r5R+tqARID;(@=jdv7w#0Kw9^v7)?Mnz-& zO89bRo!tYm&i-LT&OU73f2LkZO|sNJMQCpwSko`LHhqLt>e+f6wC==>e6)CLT6<%I zQbk!VW>66*iwu1{RA0Yb)^=vajp{&c+Jr*%c;&v+q)Sbzl6~F7rSaB8m!shnwj~F} zEUURT*ch%%tDyRtK>BpSh+fdHiB2s|k-_s(HSOke(CX1T2Yrk;KFc{|huUbwGo6FZ z#=m*SEO8!8?QvR(*lv#UhNYrvAC=Bu&|c|o-avIyFK_HCs`g1K4*kY>qt!_x2%}3; z7BkfQ2(wvPCtWS08H%cSq#hN4;Gn2V58R5qS}KP+gHC(3q_*1QrMUKVD2#rT*4E;Z zDOEA!GfJNJeeY}j*L#fbUa|kDd7t=HP9#`z<3>9@WQcsBZB5wwx)VoT7;MNAXDsk|m5uz3RGVoNvDQfY+CE?cF=7{^haw zuR{OO{O%XBu5d3Uya}5p5I+HWGYYr`bRX!Wp!Xtylb}x^!5NV0fg&}a_ky;7?gLGL zJ^{J~^hy|oM?qEnX02~DvWD}ru9z_`X9xIHuhb^WaZmZtMLZvV`@m}>2Cj1a0{G=X zkMDpQeox+J*BvvbRz2k2p1o~KXk@Bu-Sk5hM?>GM_yj{@j}pd;q__DDQqtwi2@2-N9|yfsrY$zb5gD z?{S2t>4!o`!|F+t;U&bMgNCTuB9$u#X^{<9c0!aNJfB0(2i^kkS`ddWk_&)04Bpj( zlm5@><=1`3G(+3V-UqVvMB@s>&T(dx5wzn<)O~bf>~E>6ng9!F|(30Z8;q~G-A3ERU@W5k)z~mwoln~!ZiJ( zC7aB|ztxP+ydO`Y(Hk~^h^YS2oSXhR`E#l3vG6OufV!cqGl!mk53;l6HtQ;*xn}$2 z2Tz;k$ar>m>oei)51xS@HM0W8LR+8nukbhfBQ@>64nKJ+yD7Bw)%xwl?+uP#=YRQI zS;_VO(e>GrCrthwu9-9B%(5%OQ6v{g0A6<53 z?P!(PKl(QRP5+Yor<$x^g`PPba#!ZpxGTM(GV?p1Si1J@i+&hdXngk*OGlo{lB}WM zg|m*`;a?rzTA8zG%zvl<1GQV-cOLrVj_21R-#f&aRsU+@-+5@(RT~IFl;_>2{|_nk z9Oe&OUm~?bBQNHKHkq?Fei#D5(aZcVKb19W(?{_zS~dpR(|<9pN-=B8BVeQM_E8$6 zQ@#ZO z`{n2U!89Kzdl~o2GS3xgln`U|v|ElA;+ zlUtv9;FlvX2eUSQ4Z*eT&xW7;Rd#LGGyc(cy?hAx64;`R%!keAHqs~CNabX0Bs@Au zZRDnBlK*%?EW=xqMtExw=m9kUop&Cp+4^sRt-r3>`s35rBF9Z*iRbPJZ2e8m*5CS9 zA0!}VO(7}&1M9O1s>Crs+km^hEy=vSd5LFGuur34&liCg-X56e3O#u;yN25C^p~H^ zO3n$5`Y6lLXgmir$3I$h)9(`xzHst^vf-~H3MHBS#~m*m3y&Ojg|^?&{+wynY&|Iw z**;_H=q=?he>*E#Q#+a!9u4ONM&A>->F3Gk!&y&-M~lMlWjQrjPlq1(v*-wyg&ufb z^#jQo`uDBJ!dq)|(1}rGW6{|2Imi&X?R`EMWwmwb(Do_M9}q3$m#3&@Jc|d?4K3rT z&}g|A{UG5EZJnn2%k#Nt3AXqn=B%LxB(g^)@)#1?`sWAAK4K*kJSJMgGbg|BVN`zd z%DpWK??K~|G9$F<<-~hJTdPnZp>Jc`Src7~f#X~(FmKsys?qA~}s6u{%2l78f z$h22YbFm8f4}@H=LLNc+=i=e*uI%irSzkOoYY~j3lafl+m6fI5{N}b~Un1#UR z1M{8nnQhQKfYMO$m7l4o(u4BDFmC0q{7rgahSFB?mEWqU@>3xqE=t3Gkxzj3V(G8^ zP(@WfN`IA)qD6>LKCXK1VnIbqI5X0pWE6hP#=F7N$5!d@<{L%r<)=6*KKV6t(L9Id zk1GGk=C>qEm#R1Ug!lAuLzt-elg)FLyfgj>9P#7Sm~bf?aR9FLmr`=xLL$O|fU0!_ zMK^JJN?w&)J=6OccKw@qzNaX?yJ5c^>KOMU(4PN(j;|>B*!IgA|04(_p3g3Xd$oRX zjf1b^+o`I1yXYTSk5Ac|xL5HUZ2hPa&l=e2vO0ijl$X;peM^jf zFXBkf^Y{^^pLkDMM3Dc;R|~v0&VTNfbZfu{Iqi{Kx?Lbi((BEr4x>8(e>qXpBCTS6bD)nxZ5em5tJMqjiO7Xf11BTtBSkf zYWbaCDRuGxisKm2nbcMo-=FCK1H$Q>wErD0g_WY}ofh>?T;GImz}jCYcniLX``-bS zH&F*VyHk!f;6kGi?>FFCw~03q;Qt0msdtnvR+ZN)f3fNQZ;>NAy8*v&b+}2{*~_@_ z#Q(3jNT+fPuGHU^PIHwa`g^DX2{q(h?DtR!(??-DgEiqQg{eB@NPdjC_*=1t^PBYQ zxrM(Sts<)DIP<-nj(XnU;H&2y%vXmQ`>3U_e!6ng`F7dS$;!X{cSm; zg`eY0`ESS>>Y2a2ul`1zp`MSiyqEu`4u1pJ*dV`!%cVj`;pZ{=H$Ie)WT@u`{u@IL ztfzWbe|zW{^VRbPmOm-^ws(oig~gYT@In2zgehJ}#tYH%W4H_D%Y!&{PH#!KFDxop zT!gm>4f#o&|EXdf7gNsvG9laB0Cbw)XY};9c32JZjo;)Vs{I_dN-6XaK0$1IpPIrf z+rWbKooV86ONODAeK{l?b_6Kf!19yDC)+MAwk;t#pikFD#<%ik8x*=)Mt|M$*;a*a zczyA$sR-M&Q1A`LKO?_aA8J8{HaheipV&Vp|Nf!U;)40JEf0P53K?ZA{p9}zuoLczH*#zmIjsy`mnLd_h%+-eyjy$j~g zV_)ba@00oOV8xkSFg}lwp{wV~7#FF(g+Gs_p&K~9_u}%m;_pw0@9T$}RsI)OehWYL qM?P_x}TzXsY%A literal 0 HcmV?d00001 diff --git a/samples/x86_64/core.large_bins1 b/samples/x86_64/core.large_bins1 new file mode 100644 index 0000000000000000000000000000000000000000..b0233469291bcb9310a530f7d98f90dd366379f0 GIT binary patch literal 2533568 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

l3Kdia4WHcyb%%}~pRHFR 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ℜ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

!QHd66D$B>rX^01z#B8iuIkc^fPB?#eOos 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

7aJ0b#?D0l2iI_J_O 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 z

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%0D^dJ+4sCk11a2lh#Gq1pekACHsK@sKR7yaH+*r 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Ξ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
7Mf{w|>jN%z1F#(6gA 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

{`-tzp5ZggWIHx#_eC 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