我在python中遇到子进程问题:我的脚本打开一个ELF文件,该文件对ELF的同一目录中的文件执行fopen()。 如果我直接打开它(没有“找不到文件”错误)ELF工作正常,但是当从python脚本运行它时,它找不到该文件。 该脚本位于另一个目录中,代码为:
from pwn import *
from subprocess import *
proc = subprocess.Popen("/home/m876650/mission3/mission3",
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
ret_addr = 0x00000000004007d8
print proc.stdout.readline()
payload = "A"*374 + p64(ret_addr)
proc.stdin.write(payload + '\n')
这是一个安全挑战,没有任何违法行为! 谢谢你的帮助!
答案 0 :(得分:0)
如果您的进程正在使用相对路径加载文件,那么它希望当前工作目录与脚本所在的位置相同。
您需要通过将正确的目录传递到cwd
选项subprocess.Popen()
来设置流程的当前工作目录:
proc = subprocess.Popen(
["/home/m876650/mission3/mission3"],
cwd="/home/m876650/mission3",
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
请注意,Popen()
的第一个参数是命令及其参数,因此您希望它是一个序列。