Ich probiere gerade den ASLR kennenzulernen.
Als erstes schalte ich ihn auf 1, wie in meinem Buch.
echo 1 > /proc/sys/kernel/randomize_va_space
Alles wurde mit nostackprotect kompiliert.
Laut nach meinem Buch, sollte ich irgendwann mal einen Wert wie z.B. 52 erreichen.
Ok, das Buch arbeitet mit Kernel 2.6.20 und ich arbeite mit 3.8.0
aslr_ececl.c
aslr_demo.c
root@tomovic# gdb -q --batch -ex "p 0xbfadfc3c - 0xbf8d632e"
$1 = 2136334
root@tomovic# ./aslr_execl
stack_var is at 0xbff36adc
buffer is at 0xbfd0e67e
root@tomovic# gdb -q --batch -ex "p 0xbff36adc - 0xbfd0e67e"
$1 = 2262110
root@tomovic# ./aslr_execl
stack_var is at 0xbfad52cc
buffer is at 0xbfa1f11e
root@tomovic# gdb -q --batch -ex "p 0xbfad52cc - 0xbfa1f11e"
$1 = 745902
1.Frage:
Warum bekomme ich keine kleineren Werte wie z.B. 50?
2.Frage:
Nach welcher Strategrie setzt alsr die Adressbelegung?
3.Frage:
Wie hoch ist die Warscheinlichkeit, dass es noch eine feste Adresse gibt, die den ASLR austrickst?
Als erstes schalte ich ihn auf 1, wie in meinem Buch.
echo 1 > /proc/sys/kernel/randomize_va_space
Alles wurde mit nostackprotect kompiliert.
Laut nach meinem Buch, sollte ich irgendwann mal einen Wert wie z.B. 52 erreichen.
Ok, das Buch arbeitet mit Kernel 2.6.20 und ich arbeite mit 3.8.0

aslr_ececl.c
PHP:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int stack_var;
// print an address from the current stack frame
printf("stack_var is at %p\n", &stack_var);
// start aslr_demo, to see how it's stack is arranged
execl("./aslr_demo", "aslr_demo", NULL);
}
aslr_demo.c
PHP:
#include <stdio.h>
int main(int argc, char *argv[]) {
char buffer[50];
printf("buffer is at %p\n", &buffer);
if(argc > 1)
strcpy(buffer, argv[1]);
return 1;
}
root@tomovic# gdb -q --batch -ex "p 0xbfadfc3c - 0xbf8d632e"
$1 = 2136334
root@tomovic# ./aslr_execl
stack_var is at 0xbff36adc
buffer is at 0xbfd0e67e
root@tomovic# gdb -q --batch -ex "p 0xbff36adc - 0xbfd0e67e"
$1 = 2262110
root@tomovic# ./aslr_execl
stack_var is at 0xbfad52cc
buffer is at 0xbfa1f11e
root@tomovic# gdb -q --batch -ex "p 0xbfad52cc - 0xbfa1f11e"
$1 = 745902
1.Frage:
Warum bekomme ich keine kleineren Werte wie z.B. 50?
2.Frage:
Nach welcher Strategrie setzt alsr die Adressbelegung?
3.Frage:
Wie hoch ist die Warscheinlichkeit, dass es noch eine feste Adresse gibt, die den ASLR austrickst?
Zuletzt bearbeitet: