Python 这似乎是正确的每一个基尔,但我得到索引器每次在本_bash线。但这条线路运行良好

Python 这似乎是正确的每一个基尔,但我得到索引器每次在本_bash线。但这条线路运行良好,python,binary,buffer-overflow,index-error,Python,Binary,Buffer Overflow,Index Error,这给了我 #!/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

这给了我

#!/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
回溯(最近一次呼叫最后一次):
文件“ape.py”,第17行,在
bin_bash=re.findall('有用的字符串:(.*),提示符)[0]
索引器:列表索引超出范围

如果在
[0]
上获得的列表索引超出范围,则列表为空,不包含任何值。您可以使用
not
检查列表中是否有任何值,例如:

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

验证您的
re.findall('有用的字符串:(.*),提示符)
没有返回空列表。

这是因为您的正则表达式不匹配。由于您的问题中没有示例数据,我们不能告诉您更多。刚才
re.findall('usiver_string:(*),prompt)
返回什么?如果没有,那么您可能有一个正则表达式问题。字段“Title”仅代表一个简短的标题。在更大的字段中有完整的解释。你可能是对的,我在同一个目录中有一个C代码和编译的二进制文件,其中有“有用的字符串”。让我添加我的C代码,以便您可以更好地查看它。我正在附加google drive链接//我对C不太了解,无法看到哪些数据将解析到您的Python脚本中。你必须用不同的标签提出不同的问题——我已经尽我所能回答了这个问题。
my_list = function_that_returns_a_list()
if not my_list:
    print("Your list is empty")
else:
    print(my_list[0])