diff options
author | Brett Weiland <techcrazybsw@gmail.com> | 2021-01-04 16:32:01 -0600 |
---|---|---|
committer | Brett Weiland <techcrazybsw@gmail.com> | 2021-01-04 16:32:01 -0600 |
commit | ba02c1bd6981675aaf5a0b6cddb7457e53d5eed1 (patch) | |
tree | 6eebe4d41d877fcc7cc60a32873d34a143ecfe41 /HeapLAB/challenge-one_byte |
new file: HeapLAB+Bible.pdf
new file: HeapLAB/.glibc/glibc_2.23/ld-2.23.so
new file: HeapLAB/.glibc/glibc_2.23/ld.so.2
new file: HeapLAB/.glibc/glibc_2.23/libc-2.23.so
new file: HeapLAB/.glibc/glibc_2.23/libc.so.6
new file: HeapLAB/.glibc/glibc_2.23/libio/genops.c
new file: HeapLAB/.glibc/glibc_2.23/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.23_unsafe-unlink/ld-2.23.so
new file: HeapLAB/.glibc/glibc_2.23_unsafe-unlink/ld.so.2
new file: HeapLAB/.glibc/glibc_2.23_unsafe-unlink/libc-2.23.so
new file: HeapLAB/.glibc/glibc_2.23_unsafe-unlink/libc.so.6
new file: HeapLAB/.glibc/glibc_2.23_unsafe-unlink/libio/genops.c
new file: HeapLAB/.glibc/glibc_2.23_unsafe-unlink/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.24/ld-2.24.so
new file: HeapLAB/.glibc/glibc_2.24/ld.so.2
new file: HeapLAB/.glibc/glibc_2.24/libc-2.24.so
new file: HeapLAB/.glibc/glibc_2.24/libc.so.6
new file: HeapLAB/.glibc/glibc_2.24/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.25/ld-2.25.so
new file: HeapLAB/.glibc/glibc_2.25/ld.so.2
new file: HeapLAB/.glibc/glibc_2.25/libc-2.25.so
new file: HeapLAB/.glibc/glibc_2.25/libc.so.6
new file: HeapLAB/.glibc/glibc_2.25/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.26/ld-2.26.so
new file: HeapLAB/.glibc/glibc_2.26/ld.so.2
new file: HeapLAB/.glibc/glibc_2.26/libc-2.26.so
new file: HeapLAB/.glibc/glibc_2.26/libc.so.6
new file: HeapLAB/.glibc/glibc_2.26/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.26_no-tcache/ld-2.26.so
new file: HeapLAB/.glibc/glibc_2.26_no-tcache/ld.so.2
new file: HeapLAB/.glibc/glibc_2.26_no-tcache/libc-2.26.so
new file: HeapLAB/.glibc/glibc_2.26_no-tcache/libc.so.6
new file: HeapLAB/.glibc/glibc_2.26_no-tcache/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.27/ld-2.27.so
new file: HeapLAB/.glibc/glibc_2.27/ld.so.2
new file: HeapLAB/.glibc/glibc_2.27/libc-2.27.so
new file: HeapLAB/.glibc/glibc_2.27/libc.so.6
new file: HeapLAB/.glibc/glibc_2.27/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.27_no-tcache/ld-2.27.so
new file: HeapLAB/.glibc/glibc_2.27_no-tcache/ld.so.2
new file: HeapLAB/.glibc/glibc_2.27_no-tcache/libc-2.27.so
new file: HeapLAB/.glibc/glibc_2.27_no-tcache/libc.so.6
new file: HeapLAB/.glibc/glibc_2.27_no-tcache/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.27_ubuntu1804/.debug/ld-2.27.so
new file: HeapLAB/.glibc/glibc_2.27_ubuntu1804/.debug/libc-2.27.so
new file: HeapLAB/.glibc/glibc_2.27_ubuntu1804/ld-2.27.so
new file: HeapLAB/.glibc/glibc_2.27_ubuntu1804/ld.so.2
new file: HeapLAB/.glibc/glibc_2.27_ubuntu1804/libc-2.27.so
new file: HeapLAB/.glibc/glibc_2.27_ubuntu1804/libc.so.6
new file: HeapLAB/.glibc/glibc_2.28/ld-2.28.so
new file: HeapLAB/.glibc/glibc_2.28/ld.so.2
new file: HeapLAB/.glibc/glibc_2.28/libc-2.28.so
new file: HeapLAB/.glibc/glibc_2.28/libc.so.6
new file: HeapLAB/.glibc/glibc_2.28/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.28_no-tcache/ld-2.28.so
new file: HeapLAB/.glibc/glibc_2.28_no-tcache/ld.so.2
new file: HeapLAB/.glibc/glibc_2.28_no-tcache/libc-2.28.so
new file: HeapLAB/.glibc/glibc_2.28_no-tcache/libc.so.6
new file: HeapLAB/.glibc/glibc_2.28_no-tcache/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.29/ld-2.29.so
new file: HeapLAB/.glibc/glibc_2.29/ld.so.2
new file: HeapLAB/.glibc/glibc_2.29/libc-2.29.so
new file: HeapLAB/.glibc/glibc_2.29/libc.so.6
new file: HeapLAB/.glibc/glibc_2.29/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.29_no-tcache/ld-2.29.so
new file: HeapLAB/.glibc/glibc_2.29_no-tcache/ld.so.2
new file: HeapLAB/.glibc/glibc_2.29_no-tcache/libc-2.29.so
new file: HeapLAB/.glibc/glibc_2.29_no-tcache/libc.so.6
new file: HeapLAB/.glibc/glibc_2.29_no-tcache/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.29_ubuntu1904/.debug/ld-2.29.so
new file: HeapLAB/.glibc/glibc_2.29_ubuntu1904/.debug/libc-2.29.so
new file: HeapLAB/.glibc/glibc_2.29_ubuntu1904/ld-2.29.so
new file: HeapLAB/.glibc/glibc_2.29_ubuntu1904/ld.so.2
new file: HeapLAB/.glibc/glibc_2.29_ubuntu1904/libc-2.29.so
new file: HeapLAB/.glibc/glibc_2.29_ubuntu1904/libc.so.6
new file: HeapLAB/.glibc/glibc_2.30/ld-2.30.so
new file: HeapLAB/.glibc/glibc_2.30/ld.so.2
new file: HeapLAB/.glibc/glibc_2.30/libc-2.30.so
new file: HeapLAB/.glibc/glibc_2.30/libc.so.6
new file: HeapLAB/.glibc/glibc_2.30/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.30_no-tcache/ld-2.30.so
new file: HeapLAB/.glibc/glibc_2.30_no-tcache/ld.so.2
new file: HeapLAB/.glibc/glibc_2.30_no-tcache/libc-2.30.so
new file: HeapLAB/.glibc/glibc_2.30_no-tcache/libc.so.6
new file: HeapLAB/.glibc/glibc_2.30_no-tcache/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.31/ld-2.31.so
new file: HeapLAB/.glibc/glibc_2.31/ld.so.2
new file: HeapLAB/.glibc/glibc_2.31/libc-2.31.so
new file: HeapLAB/.glibc/glibc_2.31/libc.so.6
new file: HeapLAB/.glibc/glibc_2.31/malloc/malloc.c
new file: HeapLAB/.glibc/glibc_2.31_no-tcache/ld-2.31.so
new file: HeapLAB/.glibc/glibc_2.31_no-tcache/ld.so.2
new file: HeapLAB/.glibc/glibc_2.31_no-tcache/libc-2.31.so
new file: HeapLAB/.glibc/glibc_2.31_no-tcache/libc.so.6
new file: HeapLAB/.glibc/glibc_2.31_no-tcache/malloc/malloc.c
new file: HeapLAB/.src/demo_fastbins.c
new file: HeapLAB/.src/demo_top_chunk.c
new file: HeapLAB/.src/demo_unsortedbin.c
new file: HeapLAB/HeapLab - GLIBC Heap Exploitation.pdf
new file: HeapLAB/challenge-fastbin_dup/.gdb_history
new file: HeapLAB/challenge-fastbin_dup/bruh.py
new file: HeapLAB/challenge-fastbin_dup/fastbin_dup_2
new file: HeapLAB/challenge-fastbin_dup/pwntools_template.py
new file: HeapLAB/challenge-one_byte/one_byte
new file: HeapLAB/challenge-one_byte/pwntools_template.py
new file: HeapLAB/fastbin_dup/demo
new file: HeapLAB/fastbin_dup/fastbin_dup
new file: HeapLAB/fastbin_dup/pwntools_template.py
new file: HeapLAB/house_of_force/demo
new file: HeapLAB/house_of_force/house_of_force
new file: HeapLAB/house_of_force/pwntools_template.py
new file: HeapLAB/house_of_orange/house_of_orange
new file: HeapLAB/house_of_orange/pwntools_template.py
new file: HeapLAB/malloc_testbed/.links/ld.so.2
new file: HeapLAB/malloc_testbed/.links/libc.so.6
new file: HeapLAB/malloc_testbed/change_glibc_version.py
new file: HeapLAB/malloc_testbed/malloc_testbed
new file: HeapLAB/malloc_testbed/pwntools_template.py
new file: HeapLAB/safe_unlink/pwntools_template.py
new file: HeapLAB/safe_unlink/safe_unlink
new file: HeapLAB/unsafe_unlink/demo
new file: HeapLAB/unsafe_unlink/pwntools_template.py
new file: HeapLAB/unsafe_unlink/unsafe_unlink
new file: original.gz
Diffstat (limited to 'HeapLAB/challenge-one_byte')
-rwxr-xr-x | HeapLAB/challenge-one_byte/one_byte | bin | 0 -> 15816 bytes | |||
-rwxr-xr-x | HeapLAB/challenge-one_byte/pwntools_template.py | 80 |
2 files changed, 80 insertions, 0 deletions
diff --git a/HeapLAB/challenge-one_byte/one_byte b/HeapLAB/challenge-one_byte/one_byte Binary files differnew file mode 100755 index 0000000..696030a --- /dev/null +++ b/HeapLAB/challenge-one_byte/one_byte diff --git a/HeapLAB/challenge-one_byte/pwntools_template.py b/HeapLAB/challenge-one_byte/pwntools_template.py new file mode 100755 index 0000000..d49da15 --- /dev/null +++ b/HeapLAB/challenge-one_byte/pwntools_template.py @@ -0,0 +1,80 @@ +#!/usr/bin/python3 +from pwn import * + +elf = context.binary = ELF("one_byte") +libc = elf.libc + +gs = ''' +continue +''' +def start(): + if args.GDB: + return gdb.debug(elf.path, gdbscript=gs) + else: + return process(elf.path) + +# Index of allocated chunks. +index = 0 + +# Select the "malloc" option. +# Returns chunk index. +def malloc(): + global index + io.sendthen("> ", "1") + index += 1 + return index - 1 + +# Select the "free" option; send index. +def free(index): + io.send("2") + io.sendafter("index: ", f"{index}") + io.recvuntil("> ") + +# Select the "edit" option; send index & data. +def edit(index, data): + io.send("3") + io.sendafter("index: ", f"{index}") + io.sendafter("data: ", data) + io.recvuntil("> ") + +# Select the "read" option; read 0x58 bytes. +def read(index): + io.send("4") + io.sendafter("index: ", f"{index}") + r = io.recv(0x58) + io.recvuntil("> ") + return r + +io = start() +io.recvuntil("> ") +io.timeout = 0.1 + +# ============================================================================= + +# =-=-=- EXAMPLE -=-=-= + +# Request a chunk. +chunk_A = malloc() + +# Edit chunk A. +edit(chunk_A, b"Y"*32) + +# Read data from chunk A. +data = read(chunk_A) +log.info(f"Read from chunk_A:\n{data}") + +# Free chunk A. +free(chunk_A) + +# Because you haven't leaked a libc address yet, libc.sym.<symbol name> +# will only print a symbol's offset, rather than its actual address. +log.info(f"offset of puts() from start of GLIBC shared object: 0x{libc.sym.puts:02x}") + +# Once you've leaked an address, e.g. the printf() function, use: +# libc.sym.address = <leaked printf address> - libc.sym.printf +# to correctly set your libc base address to its runtime address. Now future calls +# to libc.sym will use the symbol's actual address rather than its offset. + +# ============================================================================= + +io.interactive() |