2017-06-01 8 views
0

まず、私は悪い質問には申し訳ありません、私の悪い英語のために、私はそれをはっきりと告げることはできません。私はまた、それが何であるか分からないのですか? whallはそれと呼ばれる。バッファオーバーフローを悪用し、このプログラムのsystem()関数にパラメータを渡す方法はありますか?

下記の私の問題:

私はC言語でプログラムを書く:

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

int main() { 
    char buf[2],buf1[10]; 

    fgets(buf,2,stdin); 
    fgets(buf1,10,stdin); 

    puts(buf); 
    puts(buf1); 

    printf("Opening Shell...\n"); 

    system("/bin/dash"); 

    printf("\nEND\n"); 
    return 0; 
} 

私の目的は、バッファ変数をオーバーフローするパラメータを渡すと、いくつかを読み取ることが/binに/ダッシュ後にコマンドを挿入しています私が所有していないファイル、.etc ...私が試した: パイプ

python2.7 -c 'print "a"*12 + "\n" + " -c \"cat tes.c > show\""' | /myprogram 

私のプログラムは正常に動作しますが、シェルコード-c "cat tes.c > show"は使用できません。

すべてのファイルとアクセス許可を設定しました7777

したがって、/bin /ダッシュの後にシェルコードを挿入するにはどうすればよいですか?

ありがとうございました!私の悪い英語のために申し訳ありません。

答えて

0

の末尾に"/bin/dash"を置き換え、\0で終了するコードを挿入する必要があります。\0は文字列の最後を示すためです。

+0

'/ bin/dash'が自分のコードを実行することは確実でしょうか? –

+0

必要に応じて、 "/ bin/dash"を上書きすることもできます。ヌル文字\ 0の前にペイロードを挿入することは重要です。 – Shiro

+0

'\ n'と' \ x00'はどうですか? –

関連する問題