使用Visual Studio创建一个win32控制台项目,输入以下代码,按照课堂上讲解的方法修改项目的选项,并使用Debug x86模式编译: #include <iostream> #include <Windows.h> #define REGCODE "20203105182" int verify(char* code) { int flag; char buffer[44]; flag = strcmp(REGCODE, code); strcpy(buffer, code); return flag; } int main() { int vFlag = 0; char regcode[1024]; memset(regcode, 0, 1024); FILE* fp; LoadLibraryA("user32.dll"); if (!(fp = fopen("reg.txt", "r"))) { exit(0); } fread(regcode, 1024, 1, fp); vFlag = verify(regcode); if (vFlag) { printf("wrong(20203105182)"); } else { printf("right(20203105182)"); } fclose(fp); } 利用jmp esp指令,在reg.txt中植入shellcode,调用MessageBoxA函数,使上面的程序弹出一个对话框,其标题和内容都是你的学号的后八位。 1. 简述操作步骤

时间: 2024-04-01 18:37:28 浏览: 18
首先,需要将jmp esp指令的地址找到,可以使用工具如Immunity Debugger或者WinDBG进行调试,找到user32.dll中的jmp esp指令地址;接着,需要编写shellcode代码,将其插入到reg.txt文件中,可以使用在线工具如Metasploit或者msfvenom生成shellcode,将其转换为16进制形式,然后将其插入到reg.txt文件中;最后,运行上述程序,在弹出的对话框中输入自己的后八位学号,即可验证攻击是否成功。
相关问题

使用visual studio2019创建c#项目(窗体应用程序、控制台应...

使用Visual Studio 2019创建C++项目非常简单。首先,打开Visual Studio 2019。在开始菜单中搜索并选择Visual Studio 2019应用程序。 接下来,点击“新建项目”。在弹出的窗口中,选择“Visual C++”类别,并选择“空项目”。 接着,为项目取一个名称,并选择一个存储位置。点击“确定”以创建项目。 创建项目后,你会看到一个空的解决方案资源管理器。在解决方案资源管理器中,右键点击“源文件”文件夹,选择“添加”和“新建项”。 在弹出的窗口中,选择“C++文件(.cpp)”,并为文件取一个名称。点击“添加”以创建新的C++文件。 现在,你可以在C++文件中编写代码了。在C++文件中,你可以使用C++语法进行编程。编写完代码后,你可以点击“生成”和“生成解决方案”来编译并生成可执行文件。 最后,你可以通过点击“调试”和“开始调试”来运行你的程序。你可以在输出窗口中查看程序的输出结果。 总结起来,使用Visual Studio 2019创建C++项目只需几个简单的步骤:新建项目、添加C++文件、编写代码、生成解决方案,最后开始调试运行程序。这个过程非常直观和简单,适合初学者和专业开发者使用。通过Visual Studio 2019,你可以轻松创建和开发C++项目,并使用强大的调试工具来调试和运行你的程序。

使用Visual Studio创建一个win32控制台项目,输入以下代码,按照课堂上讲解的方法修改项目的选项,并使用Debug x86模式编译: #include <iostream> #include <Windows.h> #define REGCODE "20203105182" int verify(char* code) { int flag; char buffer[44]; flag = strcmp(REGCODE, code); strcpy(buffer, code); return flag; } int main() { int vFlag = 0; char regcode[1024]; memset(regcode, 0, 1024); FILE* fp; LoadLibraryA("user32.dll"); if (!(fp = fopen("reg.txt", "r"))) { exit(0); } fread(regcode, 1024, 1, fp); vFlag = verify(regcode); if (vFlag) { printf("wrong(20203105182)"); } else { printf("right(20203105182)"); } fclose(fp); } 利用jmp esp指令,在reg.txt中植入shellcode,调用MessageBoxA函数,使上面的程序弹出一个对话框,其标题和内容都是你的学号的后八位。 利用x32dbg,具体怎么操作

首先,需要使用x32dbg打开你创建的win32控制台项目的可执行文件(.exe文件)。 1. 打开x32dbg,点击File -> Open,选择你的可执行文件。 2. 在x32dbg中点击Debug -> Run,运行程序,保证程序能够正常执行。 3. 在x32dbg中点击View -> CPU,打开CPU窗口。 4. 在CPU窗口中输入“jmp esp”,然后按Enter键,此时CPU窗口会显示jmp esp指令的地址。记下这个地址,后面会用到。 5. 关闭CPU窗口,再次点击View -> Memory,打开Memory窗口。 6. 在Memory窗口中找到reg.txt文件的地址,右键点击该地址,选择“Follow in Dump”。 7. 在Dump窗口中找到reg.txt的内容所在的地址,右键点击该地址,选择“Fill with NOPs”。 8. 在Dump窗口中将光标移动到填充的NOPs处,在NOPs处输入shellcode代码,例如: \x68\x00\x00\x00\x00\x68\x00\x00\x00\x00\x6A\x00\xFF\x15\x00\x00\x00\x00 这段代码是调用MessageBoxA函数的shellcode,其中第一个“\x68\x00\x00\x00\x00”表示将后面的地址压入栈中,第二个“\x68\x00\x00\x00\x00”表示将后面的地址压入栈中,第三个“\x6A\x00”表示将0值压入栈中,最后的“\xFF\x15\x00\x00\x00\x00”表示调用MessageBoxA函数。 9. 在Dump窗口中将光标移动到shellcode的末尾处,右键点击该地址,选择“Assemble”,此时会弹出一个输入框。 10. 在输入框中输入“jmp esp”的地址,然后点击OK按钮。此时,shellcode中的最后一条指令应该变成了“jmp esp”。 11. 关闭Memory窗口,再次运行程序,此时应该会弹出一个对话框,标题和内容都是你的学号的后八位。

相关推荐

最新推荐

recommend-type

使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)

vs2019的安装可参考visual studio2019的安装以及使用。 二、创建C#窗体应用程序 打开vs 可以直接在搜索框输入关键字进行搜索,选择 Windows 窗体应用(.NET Framework)。如图。 也可以限定项目类型,所用的语言...
recommend-type

Visual Studio Code搭建django项目的方法步骤

之前我们使用VSCode搭建C#项目,今天写一篇关于django项目的搭建,其实以其说是搭建django框架,不如说是如何通过vscode开发django项目;django官网:https://www.djangoproject.com/ 安装django django安装命令:...
recommend-type

在Visual Studio 2019中修改项目名的方法

主要介绍了在Visual Studio 2019中修改项目名的方法,文中通过示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Visual Studio 2019创建C++ Hello World项目的方法

主要介绍了Visual Studio 2019创建C++ Hello World项目的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

Visual Studio 2019配置vue项目的图文教程详解

主要介绍了Visual Studio 2019配置vue项目的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。