b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

一定程度上能防范缓冲区溢出攻击的措施有哪些_堆栈溢出 攻击_一定程度上能防范缓冲区溢出攻击的措施有(2)

电脑杂谈  发布时间:2019-07-23 08:05:34  来源:网络整理

对于分配在堆栈上的局部变量来说,操作系统维护着一个堆栈指针来指向下一个自由空间的地址,并且堆栈的内存地址是由高位到低位向下填充,也就表示入栈时栈顶向低地址扩展,出栈时,栈顶向高地址回退以下例而言:。当程序执行至mycall方法时,假设此时线程栈的初始地址为50000,因此堆栈指针开始指向50000地址空间。在单片机上电的瞬间,mcu的程序指针pc会被初始化为上电复位时的地址,从哪个地址处读取将要执行的指令,由此程序在mcu上开始执行(当然在调用程序的main之前,还有一系列其他的的初始化要做,如堆栈的初始化,不过这些很少回去修改)。

将shellcode指令按功能分为三部分来进行考虑。第一部分是shellcode头,其主要功能是保护当前寄存器状态,为执行shellcode功能体做准备;第二部分是shellcode功能体,由其完成一定的功能如弹出对话框、添加新用户等;最后一部分就是shellcode尾,其功能是恢复寄存器状态、跳转至正常执行时下一条指令地址。另外shellcode的最后4字节应该是覆盖ret返回地址的地址。(1)shellcode头。功能:在内存堆栈中划分额外空间(shellcode功能体使用),并保护当前寄存器状态。实现代码:_asm{sub esp, 1024hpushad}(2)shellcode功能体。功能:完成具体执行功能。实现代码:具体参见实现步骤。利用ShellExecuteAAPI函数运行控制台程序net实现添加系统用户是一个不错的选择,net添加用户及提升用户权限命令如下:新建用户:netuserusernamepassword/add用户所属组:netlocalgroupadministratorsusername/add调用执行:ShellExecuteA(0,“open”,“net”,net执行参数,SWHIDE)其中username是新建用户名称,password是用户口令一定程度上能防范缓冲区溢出攻击的措施有哪些,/addShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。

如果指定的文件是可执行文件,函数将以open的方式打开这个文件。(3)shellcode尾。功能:恢复寄存器状态;shellcode功能体执行完成后,跳转到指定代码地址继续执行;使用新地址覆盖原ebp地址及ret返回地址。实现代码:_asm{popadadd esp, 102Chmov edx, OxXXXXXXXXjmp edx}通过popad指令将恢复所有普通寄存器先前状态。恢复栈顶指针。通过jmp指令无条件跳转至0xXXXXXXXX处执行指令。具体实现过程如下:(1)使用VC编写项目文件:CreateShellCode、OverFlowClient和OverFlowServer。(2)生成shellcode功能体(a)首先设置OverFlowClient项目为启动项。(b)双击打开OverFlowClient.cpp源文件,在该源文件中需要填写的代码有:kernel32.dll基址(第21行),LoadlibraryA函数的绝对内存地址(第23行)和shellExecuteA函数(隶属于Shell32.dll动态库)的绝对内存地址。(c)编译并生成OverFlowClient.exe,执行OverFlowClient.exe,确定系统是否新建了jlcss用户,并隶属Administrators组。

堆栈溢出 攻击_一定程度上能防范缓冲区溢出攻击的措施有哪些_一定程度上能防范缓冲区溢出攻击的措施有

(3)生成shellcode指令码(a)设置CreateShellCode为启动项。双击打开CreateShellCode.cpp源文件,CreateShellCode的工作流程是:首先生成shellcode头,并将相关指令码写入shellcode.shc文件中;接下来是生成shellcode功能体,功能体代码来自OverFlowClient.exe中shellcode函数执行体,将功能体代码追加到shellcode.shc中;最后是生成shellcode尾,同样将其指令码追加到shellcode.shc中。(b)这里需要填写的宏数值有:SHELLCODEBODYSTART(OverFlowClient.exe中ShellCode主体起始偏移地址);SHELLCODEBODYLEN(OverFlowClient.exe中ShellCode主体代码长度);CORRECTRETURNADDR(OverFlowServer中overflow调用完成后程序正常执行返回地址,即OverFlow正常调用完成后的下一条指令地址);在OverFlowServer中函数OverFlow调用执行前,ebp基地指针地址;OverFlow溢出返回地址,即函数溢出后shellcode得以执行的首地址。

再继续查看其他的wlx类函数,都是调用getprocaddress_0函数,获取相关函数的地址,也就是调用gina的功能,执行相关操作。函数是在编译之后,在执行时才执行调用.宏定义:宏只是在预处理的地方把代码展开,简单的字符串替换,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率。先说说用getmodulehandle函数获取.此方法需要用createremotethread函数在远程进程中创建线程,让该线程调用kernel32.dll中的getmodulehandle函数.但是只这样还不行.因为getmodulehandle函数需要以dll模块文件名做参数.既然是远程线程调用getmodulehandle函数.还需要先把dll模块文件名写入目标进程的地址空间中.最后用createremotethread函数创建线程执行getmodulehandle函数来获取dll句柄。

程序首先打开存放shellcode指令码的文件(默认名称为shellcode.shc),读取shellcode.shc的全部内容至接收缓冲区中。接下来就是利用memcpy函数实现接收缓冲区的拷贝,目标地址是OverFlow函数内的局部缓冲区,该缓冲区默认大小为450字节,需要根据实际调试结果重新确定其大小。最后在OverFlow调用完成后程序继续执行(溢出执行后程序依然能够正常继续运行)。调整TempBuffer缓冲区大小,使其大于临时shellcode指令码长度,这样做的目的是让程序正常执行(不发生溢出),以便我们能够获取OverFlow函数执行调用后的正确返回地址。调试获取OverFlow函数正常调用执行后的下一条指令地址。调试过程如图3.6所示。图3.6函数溢出后返回地址填写该指针地址到CreateShellCode.cpp文件中。(b)OverFlow函数调用前ebp基地址指针。单步调试程序定位到OverFlow函数入口处,获取此时的EBP指针地址,如图3.7所示。图3.7 verFlow调用执行前EBP指针地址填写EBP指针地址到CreateShellCode.cpp文件中。

(c)最后确定shellcode的最后4字节,从原理中可知需用这4字节数覆盖调用返回地址,使得shellcode得以执行。从OverFlowServer程序又可知shellcode最后被加载到TempBuffer缓冲区,所以只要用TempBuffer缓冲区首地址覆盖调用返回地址,在程序溢出后shellcode便会执行了。调用OverFlowServer.exe确定OverFlow调用执行过程中TempBuffer缓冲区的首地址。调试过程如图3.8所示。图3.8 局部变量内存地址将TempBuffer缓冲区首地址填写到CreateShellCode.cpp文件中。至此全部的shellcode指令生成完毕,运行Createshellcode.exe生成完整的shellcode.sh文件,使用UltraEdit编辑器对其进行查看。(5)调试确定TempBuffer缓冲区大小调试OverFlowServer.exe得到OverFlow调用返回时的地址,将返回地址与shellcode.shc中的十六数相比较,有三种比较结果:(a)返回地址是shellcode最后4字节数据。函数返回时执行shellcode。

微软表示,该漏洞允许黑客完全控制受影响的系统,然后可删除数据、安装恶意软件,或创建给予黑客所有权限的系统账户。 “秘狐”漏洞为黑客打开隐秘入侵之门“秘狐”漏洞的危害在于允许黑客远程执行任意代码,包括删除或窃取数据、下载安装木马病毒,创建完整权限帐户等操作。微软在建议书中表示,这一漏洞可能导致黑客完全控制受影响的系统,随后可以进行删除数据、安装恶意软件以及创建完整权限账户等操作。

堆栈溢出 攻击_一定程度上能防范缓冲区溢出攻击的措施有哪些_一定程度上能防范缓冲区溢出攻击的措施有

use master exec sp_addumpdevice 'disk', 'networkdevice', '\\servername\sharename\path\filename.ext' 以前曾看到过有人问,怎么样才能将数据备份到网络上,一直没有答案,然后我就试验了一把.在服务器上建了一个目录,然后确保共享并有权限,如果需要建在共享目录下的目录下,那还得保证用户有权限当然,sqlserver系统启动早于登录,一般用户会在登录中使用本地系统账户,我想在登录到系统之前一直是administrator用户模拟,因此,我将登录的账户改为了网络用户,因为我公司有域,因此我将域用户设置为本机的系统管理员,以确保该服务能启动.接下来更简单了:sp_addumpdevice 'disk','network','\\server\d$\databak\xuzh.bak' 。(4)、 设定public的权限, 因为samba不能做到每个人只能删除自己的文件, 不能删除别人的功能,linux设置目录sticky bit权限. 目录设定了sticky的权限,在这个目录下的文件只有root与文件的所有者才能删除, 别的用户可能通过设置,才能查看此用户目录下所有文件,但不能删除,只有本用户才能删除。接下来以 root 账户登录,执行以下命令 (设置目录权限,便于在 windows 网上邻居里写入文件):。

(6)在溢出成功后对root口令进行修改,输入命令:passwdroot修改root用户口令。4、 root用户重新登录注销结束当前会话,以root身份重新登录系统。(1)获取explorer.exe进程的PID值由于漏洞利用程序keybd.exe的溢出原理,需要用到explorer.exe进程的PID值。我们的第一步工作就是得到explorer.exe进程所相对应的PID值。右键点击工具栏,选择"任务管理器",在"进程"标签中可以看到当前系统中运行的所有进程,查看进程的PID值。(2)用"keybd.exe"进行溢出点击"开始"→"运行",输入"CMD"运行"命令提示符",在"命令提示符"中运行"keybd。exe",其溢出格式如下"keybd。exeexplorer。exe进程的PID值",根据上文中得出的PID值,我们输入"keybd。exe1300"即可。如果溢出成功,会出现一个新的"命令提示符"窗口。

(3)得到系统权限溢出成功后,使用NC来获取一个拥有系统权限的shell。在"命令提示符"中运行NC,输入命令"nc-vvlocalhost65535",回车后就会得到一个拥有系统权限的shell,在这个shell中可以执行任意命令,我们的目标是将当前使用的用户权限账户提升为管理员权限。第四章 基于缓冲区溢出的防御方法防范缓冲区溢出,要从主观和客观两方面进行入手,主观方面,要提高程序员的编程水平;客观方面,从底层系统入手,启用自动保护程序,尽量避免缓冲区溢出问题的发生,也可以从系统和软件两方面入手;遗憾的是,迄今所见的所有方法都具有弱点,因此它们不是万能药,但是它们会提供一些帮助。下面对于缓冲区溢出的特点,探讨一下防范策略。在编写程序的时候程序员有责任和义务养成安全编程的思想,应该熟悉那些可能会产生缓冲区溢出漏洞的函数,清楚那些在编程中要小心使用的函数。在软件测试阶段,测试人员要专门对程序中的每个缓冲区作边界检查和溢出检测。但是,由于程序员的经验不足和测试工作不够全面,目前还不可能完全避免缓冲区溢出漏洞,因此这些漏洞在已经使用以及正在开发的软件中还是有存在的可能性,还需要在使用软件时,对它做实时的监测。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-115084-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 张学文
      张学文

      我没看懂MV前面写他粉丝怎么怎么欢迎

    • 杨新波
      杨新波

      加油

    热点图片
    拼命载入中...