Lab05
.pdfМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,
СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Инфокоммуникационных сетей и систем
Кафедра Защищенных систем связи
Дисциплина Эксплуатация Уязвимостей Программного Обеспечения
10.03.01 Информационная безопасность
(код и наименование направления/специальности)
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №5
Выполнил:
Яковлев И. А., ИКБ-95________________________________
(Ф.И.О., № группы) (подпись)
Милькота Н. О., ИКБ-95________________________________
(Ф.И.О., № группы) (подпись)
Погосов М. В., ИКБ-95________________________________
(Ф.И.О., № группы) (подпись)
Преподаватель:
Браницкий А. А.______________________________________
(Ф.И.О) (подпись)
Санкт-Петербург
2022
Изменение дампа памяти Python-процесса и инъекции кода. Осуществление таким образом, чтобы в файл /tmp/out/данные (логин, пароль) была запись в исходном виде.
0. Установим ncat
1. Написать код для файла server.ру и payload.ру:
#!/usr/bin/puthon3
import hashlib import socket
def store(d):
with open(‘/tmp/out’.’+a’) as h: h.write(d+”\n”)
def encrypt(p):
return hashlib.sha512(p.encode()).hexdigest()
sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((‘127.0.0.1’))
sock.listen(1) while True:
conn,_=sock.accept() while True:
data=conn.recv(1024) if not data:
break
data = data.decode().rstrip() login, passwd = data.split(‘ ‘)
store(login + ‘ ‘ + encrypt(passwd)) conn.close()
2
2. Листинг payload.py для возвращения значения пароля в открытом виде:
def encrypt(p): return p
3.Запуск сервера:
4.Передача логина и пароля на порт 10001, и хеширование данных в
/tmp/out:
5.Хеширование данных:
6.Внедрение кода payload.py в процесс server.py с помощью установленного инструмента pyrasite с последующей повторной записью данных в файл
/tmp/out:
7.Проверка их записи в исходном виде:
3