2016-05-11 3 views
0

大学のプロジェクトで教授から与えられたいくつかのプログラムでバッファオーバーフローを実行する必要があります。Pythonで環境変数のアドレスを取得

私はセットアップにはPythonと私のシェルコードの環境変数をしたいと私はそれを行う:

import os 
os.environ("EGG") = "..." 
os.system('bash') 

ので、今のpythonは、子bashのプロセスを生成します。しかし今、EGGの住所をどのように印刷することができますか? 私はCでこれを行っている:

#include <stdlib.h> 
#include <stdio.h> 

int main(){ 
    printf("%x", getenv("EGG")); 
    return 0; 
} 

が、私は、Pythonでそれをやってみたいです。誰でも助けることができますか?

+0

http://stackoverflow.com/questions/4906977/how-to-access-environment-variables-from -python – nikli

+0

このアドレスはどうしますか?各プロセスには独自のアドレス空間と独自の環境コピーがあることをご存じですか? – interjay

+0

@interjay:一度アドレスを印刷すると、シェルコードを実行する環境変数の1つでリターンアドレスを上書きする脆弱なプログラムを起動することができます。 –

答えて

0

あなたは六角のid()https://docs.python.org/2/library/functions.html#id

id(os.environ.get('EGG') 

を使用することができます。

hex(id(os.environ.get('EGG')) 
+0

これを試しましたが、CプログラムとPythonのものが私に別の結果を返します... –

+1

それはpythonプロセスのenv変数に対応するpython文字列のid(CPythonのアドレス)。子プロセスとC文字列の環境とはまったく異なるものです。 –

関連する問題