lire un fichier contenant plusieurs shellcode pour pouvoir les exécuter
Bonjour,
J'ai actuellement un shellcode whoami. Ma problématique est d'executer ce shellcode selon l'OS sur laquelle il se lance.
J'ai donc actuellement un script avec une confition if elif qui vérifie si je suis sur linux ou windows.
Pour que vous compreniez mieux la suite, voici mon script python :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| import ctypes
import platform
print(platform.platform())
if ( "Linux" in platform.platform() or "linux" in platform.platform()):
print("Tu es sur linux")
shellcode_data = ( "\x6a\x3b\x58\x99\x48\xbb\x2f\x62\x69\x6e\x2f\x73\x68\x00\x53"
"\x48\x89\xe7\x68\x2d\x63\x00\x00\x48\x89\xe6\x52\xe8\x10\x00"
"\x00\x00\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x77\x68\x6f\x61"
"\x6d\x69\x00\x56\x57\x48\x89\xe6\x0f\x05");
shellcode = ctypes.create_string_buffer(shellcode_data)
function = ctypes.cast(shellcode, ctypes.CFUNCTYPE(None))
addr = ctypes.cast(function, ctypes.c_void_p).value
libc = ctypes.CDLL('libc.so.6')
pagesize = libc.getpagesize()
addr_page = (addr // pagesize) * pagesize
for page_start in range(addr_page, addr + len(shellcode_data), pagesize):
assert libc.mprotect(page_start, pagesize, 0x4) == 0
function()
elif ( "Windows" in platform.platform() or "windows" in platform.platform()):
print("Tu es sur windows")
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0),
ctypes.c_int(len(shellcode)),
ctypes.c_int(0x3000),
ctypes.c_int(0x40))
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr),
buf,
ctypes.c_int(len(shellcode)))
ht = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0),
ctypes.c_int(0),
ctypes.c_int(ptr),
ctypes.c_int(0),
ctypes.c_int(0),
ctypes.pointer(ctypes.c_int(0)))
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(ht),ctypes.c_int(-1)) |
Mon problème est le suivant :
J'aimerais plutot que d'avoir à remplacer à chaque fois le contenu de la variable shellcode_data lire un fichier txt contenant le shellcode afin de pouvoir l'executer et rendre mon script utilisable par plusieurs shellcode en modifiant juste le chemin du txt
Supposons que mon fichier txt s'appelle shellcode.txt, comment puis-je faire cela ?
Merci d'avance