我正在尝试编写一个暴力破解ELF程序的python脚本。我需要在此ELF程序中输入非常大的数字才能使其正常工作。我当前的脚本是:
for x in range(10000000000000,100000000000000000):
print(x)
然后在命令行上:
python script.py | ./program
我已经确定了2个错误,首先是由于数字的大小,这给了我一个内存错误。第二个是输入后程序继续运行。我需要它输入到程序中,然后结束程序并输入下一个值。
必须保留数字的大小,输入低数字不会破解程序。
我将在Python 3中执行此操作,并使用subprocess
子模块:
import subprocess
for x in range(10000000000000, 100000000000000000):
subprocess.run(f'./program {x}', shell=True)
简单地运行为:
python3 script.py
首先生成所有这些数字,将它们连接成一个大字符串(由print
隐式添加的换行符分隔,然后最终将此single巨大字符串通过管道传输到程序中。
由于您生成的字符串不适合内存,您的内存不足了。
我猜您想分别测试每个数字,一个接一个。您可以使用python(使用subprocess模块)执行此操作。但是使用bash则简单得多:
for ((a=10000000000000; a <= 100000000000000000 ; a++)); do
echo $a | ./program
done