2016-05-05 6 views
-1
#include <stdio.h> 
#include <string.h> 
int main(int argc, char **argv) 
{ 
    // Make some stack information 
    char a[100], b[100], c[100], d[100]; 
    // Call the exploitable function 
    exploitable(argv[1]); 
    // Return everything is OK 
    return(0); 
} 

int exploitable(char *arg) 
{ 
    // Make some stack space 
    char buffer[10]; 
    // Now copy the buffer 
    strcpy(buffer, arg); 
    printf("The buffer says .. [%s/%p].\n", buffer, &buffer); 
    // Return everything fun 
    return(0); 
} 

私は大きな値で悪用可能なものを呼び出す必要があります。また、メインプログラムで正常に戻るはずです。どんな推測も感謝です。Cプログラムのバッファオーバーフローと成功の実行方法

+0

現在、アドレス空間のランダム化の存在を考えると、これはほとんど不可能です。スタックフレームのアドレスを推測するために複数回実行することができない限り。 –

+0

あなたは何を達成しようとしていますか?スタック内のメモリを上書きするには? –

答えて

1

バッファオーバーフローにより、未定義の動作(UB)が発生します。 あなたのコードでUBを持ついくつかの定義済みの結果を達成しようとしている場合は、間違ったパスになってしまいました。

関連する問題