2017-05-25 12 views
0

私はPythonのサブプロセスに問題があります。私のスクリプトは、ELFの同じディレクトリにあるファイルに対してfopen()を実行するELFファイルを開きます。 ELFは直接開くと(「ファイルが見つかりません」というエラーはありません)、Pythonスクリプトから実行するとうまく動作しますが、ファイルを見つけることができません。 スクリプトは別のディレクトリにある、コードはこれです: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') 

それはセキュリティ上の課題、違法何のためにあります! 助けてくれてありがとう!

+1

現在の作業ディレクトリを設定したことはありますか? –

+0

私は直接開いていますか?これは通常のシェル(bashなど)やファイルエクスプローラ上にあるのでしょうか。 「オープン」と? – jdehesa

+0

私は、通常のシェルから開くと、うまく動作します –

答えて

0

プロセスが相対パスでファイルをロードしている場合、現在の作業ディレクトリは、スクリプトがある場所と同じであると想定します。

あなたはcwdオプションsubprocess.Popen()への正しいディレクトリに渡すことによって、プロセスの現在の作業ディレクトリを設定する必要があります:Popen()への最初の引数がコマンドであることを

proc = subprocess.Popen(
    ["/home/m876650/mission3/mission3"], 
    cwd="/home/m876650/mission3", 
    stdin=subprocess.PIPE, 
    stdout=subprocess.PIPE, 
    stderr=subprocess.PIPE) 

とその引数はなので、それをシーケンスにしたいと思います。

関連する問題