1

http://www.securitytube.net/groups?operation=view&groupId=4Ubuntuのビデオに従って、12.04 32 ビット マシンでのバッファ オーバーフローについて学習しようとしています。現在、パート 5 に取り組んでおり、再配置可能なコードを挿入して、ExecVe を介して bash シェルを生成します。

パート 5 のビデオに示されているようにShellcode.c、 を使用して問題なくビルドできます。gcc -mpreferred-stack-boundary=2 -o Shellcode Shellcode.cただし、C コードを実行すると、取得できるのはSegmentation Fault (core dumped). ビデオに示されているように、bash シェルが生成されません。

デモが示すように bash シェルを生成しない理由を誰か教えてもらえますか? これは、新しいバージョンのカーネルを使用しているためだと直感的にわかります (デモで何が使用されているかわかりません)。

ありがとう!

コードは次のとおりです。

Shellcode.c

#include<stdio.h>

char shellcode[] = "\xeb\x18\x5e\x31\xc0\x88\x46\x09\x89\x76\x0a"
                   "\x89\x46\x0e\xb0\x0b\x89\xf3\x8d\x4e\x0a\x8d\x56\x0e"
                   "\xcd\x80\xe8\xe3\xff\xff\xff\x2f\x62\x69\x6e\x2f\x62"
                   "\x61\x73\x68\x41\x42\x42\x42\x42\x43\x43\x43\x43";


int main(){

        int *ret;

        ret = (int *)&ret +2;

        (*ret) = (int)shellcode;

}
4

1 に答える 1