第5章 堆溢出漏洞利用_狙击PEB中RtlEnterCritical-Section()的函数指针

本文介绍了在Windows2000环境下,利用VC++6.0创建的漏洞代码,通过堆溢出攻击修复PEB中的RtlEnterCriticalSection函数指针。调试过程使用ollydbg,设置断点后,程序流程转向自定义shellcode,最终实现弹出MessageBox。实验中注意到,大量申请堆块可能导致异常,且shellcode可能涉及其他环境修复操作。
摘要由CSDN通过智能技术生成

目录

漏洞环境

shellcode布局

ollydbg调试

其他注意事项


漏洞环境

测试环境:Windows2000、VC++6.0、ollydbg(原版)

漏洞代码代码如下:

#include <stdio.h>
#include <Windows.h>

int main()
{
	LoadLibraryA("user32.dll");
	MessageBoxA(0,0,0,0);

	char shellcode[1024];
	int size=0;
	FILE * fp=NULL;
	if( !(fp=fopen("D:\\shellcode","rb")) )
	{
		printf("open file fail!\n");
		exit(0);
	}
	// fscanf函数读取文件全部内容有弊端
	fseek(fp, 0, SEEK_END);
	size=ftell(fp);
	fseek(fp, 0, SEEK_SET);
	fread(shellcode,1,size,fp);
	fclose(fp);
	fp=NULL;

	__asm 
	{
		mov eax,fs:[0x30]
		int 3 //used to break the process
	}
	HLOCAL h1,h2,h3,h4,h5,h6;
	HANDLE hp;
	hp = HeapCreate(0,0x1000,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拜乔布斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值