Ich habe ASLR deaktiviert. Nun, ich möchte die Adresse der Umgebungsvariablen "SHELL" erhalten, also verwende ich die C-Funktion getenv().Holen Sie die Umgebungsvariable Adresse
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char* ptr = getenv("SHELL");
printf("%p\n", ptr);
}
Die Adresse mit getenv erhalten()
$ ./getenv
0xbffff752
Die Adresse mit GDB erhalten:
gdb> x/4000s $esp
...
(gdb) x/s 0xbffff710
0xbffff710: "SHELL=/bin/bash"
(gdb) x/s 0xbffff716
0xbffff716: "/bin/bash"
Warum sind die verschiedenen Adressen? Wie bereits erwähnt, muss ich die korrekte Adresse in der mit GDB erhaltenen Adresse angeben.
Woher wissen Sie, dass die richtige Adresse mit gdb ist? Sicherlich sind beide richtig –
Beide leben in verschiedenen Umgebungen. –
@EdHeal Wenn ich mit der mit der C-Funktion erhaltenen Adresse suche: (gdb) x/s 0xbffff752 0xbffff752: \t –
David