Кажется, это правильно каждый раз, но я получаю IndexError каждый раз в строке bin_bash.но с линией путов работает нормально - PullRequest
0 голосов
/ 18 ноября 2018
#!/usr/bin/env python
import pwn
import re

gdb_puts = 0x7ffff7a649c0
gdb_system = 0x7ffff7a33440

offset = gdb_puts - gdb_system

elf = pwn.ELF('./vuln') 
p = elf.process()

prompt = p.recv()
print prompt

puts = re.findall('puts: (.*)', prompt)[0]
bin_bash = re.findall('useful_string: (.*)', prompt)[0]

print puts
print bin_bash

Это дает мне

Traceback (most recent call last):
  File "ape.py", line 17, in <module>
    bin_bash = re.findall('useful_string: (.*)', prompt)[0]
IndexError: list index out of range

1 Ответ

0 голосов
/ 18 ноября 2018

Если индекс списка выходит за пределы диапазона [0], тогда список пуст и не содержит значения.Вы можете проверить, есть ли в списке какие-либо значения, используя not, например:

my_list = function_that_returns_a_list()
if not my_list:
    print("Your list is empty")
else:
    print(my_list[0])

Убедитесь, что ваш re.findall('useful_string: (.*)', prompt) не возвращает пустой список.

...